Python中定义函数默认参数值的使用注意事项? 关于python带默认值的参数只能放在后面的问题

PYthon\u5173\u4e8e\u4f7f\u7528\u51fd\u6570\u9ed8\u8ba4\u53c2\u6570\u7684\u95ee\u9898\uff1f


\u8d4b\u503c\u51fd\u6570\u5206\u5f00\u6765\u6539\u6210\u8fd9\u6837\u5b50

\u7b2c\u4e00\u4e2a\u90a3\u4e2a*x\u662f*args\u7684\u610f\u601d\uff0c\u5c31\u662f\u4efb\u610f\u4e2a\u53c2\u6570\uff0cC++\u91cc\u7684 va_arg\uff0c...\u7b26\u53f7\u8fd9\u79cd\uff0cpython\u51fd\u6570\u91cc\u53ef\u4ee5\u6709*args\u548c**kwargs\u3002
*args\u4e4b\u540e\u53ef\u4ee5\u968f\u4fbf\u653e\u6709\u9ed8\u8ba4\u503c\u7684\u548c\u6ca1\u6709\u9ed8\u8ba4\u503c\u7684\u3002
\u56e0\u4e3a\u8fd9\u4e4b\u540e\u7684\u4efb\u4f55\u4e1c\u897f\u90fd\u5f97\u7528\u201dy=1\u201c\u201dz=1\u201c\u8fd9\u79cd\u6765\u8d4b\u503c\u3002
\u6bd4\u5982\u8bf4\u7b2c\u4e00\u4e2a\u51fd\u6570\uff0cdef fun(*x, y=4, z)\uff0c\u6211\u5199fun(1,2,3,4,5)\uff0c\u8fd9\u4e94\u4e2a\u6570\u5168\u8dd1\u5230*x\u91cc\u4e86\u3002\u6211\u60f3\u7ed9y\u548cz\u8d4b\u503c\u5fc5\u987b\u8981\u5199fun(1,2,3,4,5,y=6,z=7)\u3002\u76f8\u5f53\u4e8ez\u8ddf\u6709\u9ed8\u8ba4\u503c\u7684\u90a3\u79cd\u4e5f\u5dee\u4e0d\u591a\u4e86\u3002\u6240\u4ee5\u89c4\u5b9a\u53ef\u4ee5\u628az\u653e\u5728*x\u540e\u9762\u7684\u4efb\u4f55\u4f4d\u7f6e\uff0c\u5305\u62ecy=4\u540e\u9762\uff0c\u5b83\u4eec\u7684\u4f4d\u7f6e\u5173\u7cfb\u5df2\u7ecf\u6ca1\u6709\u7528\u4e86\u3002
\u89c4\u5b9adef fun(x=4, y) y\u5fc5\u987b\u653e\u5728x\u524d\uff0c\u5c31\u662f\u8981\u4fdd\u7559\u8fd9\u79cd\u4f4d\u7f6e\u5173\u7cfb\uff0c\u8981\u4e0d\u6211\u5199fun\uff081\uff09\uff0c\u4f60\u8bf4\u8fd9\u4e2a1\u662f\u7ed9x\u7684\u8fd8\u662fy\u7684\uff1f\u5c31\u6709\u4e86\u6b67\u4e49\u3002\u6240\u4ee5\u5fc5\u987b\u8981\u6709\u6b63\u786e\u7684\u4f4d\u7f6e\u5173\u7cfb\u3002\u4f46\u662f*x\u540e\u9762\u6240\u6709\u4e1c\u897f\u90fd\u662f\u7528\u53c2\u6570\u540d\u8d4b\u503c\u7684\uff0c\u4f4d\u7f6e\u5173\u7cfb\u4e0d\u8d77\u4f5c\u7528\u4e86\uff0c\u6240\u4ee5\u53ef\u4ee5\u4efb\u610f\u987a\u5e8f\u4e86\u3002
\u8981\u7406\u89e3\u89c4\u5b9a\u80cc\u540e\u7684\u539f\u56e0\u3002\u540c\u7406\uff0c**kwargs\u653e\u5728\u6700\u540e\uff0c\u4e5f\u662f\u8fd9\u4e2a\u539f\u56e0\u3002\u6d88\u9664\u6b67\u4e49\u6027\u3002

4.7.1. 默认参数值
最常用的一种形式是为一个或多个参数指定默认值。这会创建一个可以使用比定义是允许的参数更少的参数调用的函数,例如:
def ask_ok(prompt, retries=4, complaint='Yes or no, please!'):
while True:
ok = input(prompt)
if ok in ('y', 'ye', 'yes'):
return True
if ok in ('n', 'no', 'nop', 'nope'):
return False
retries = retries - 1
if retries < 0:
raise OSError('uncooperative user')
print(complaint)
这个函数可以通过几种不同的方式调用:
只给出必要的参数:
ask_ok('Do you really want to quit?')
给出一个可选的参数:
ask_ok('OK to overwrite the file?', 2)
或者给出所有的参数:
ask_ok('OK to overwrite the file?', 2, 'Come on, only yes or no!')
这个例子还介绍了 in 关键字。它测定序列中是否包含某个确定的值。
默认值在函数 定义 作用域被解析,如下所示:
i = 5
def f(arg=i):
print(arg)
i = 6
f()
将会输出 5。
重要警告: 默认值只被赋值一次。这使得当默认值是可变对象时会有所不同,比如列表、字典或者大多数类的实例。例如,下面的函数在后续调用过程中会累积(前面)传给它的参数:
def f(a, L=[]):
L.append(a)
return L
print(f(1))
print(f(2))
print(f(3))
这将输出:
[1]
[1, 2]
[1, 2, 3]
如果你不想让默认值在后续调用中累积,你可以像下面一样定义函数:
def f(a, L=None):
if L is None:
L = []
L.append(a)
return L

列前因后果的重要事件统统反映出来。他目前还处在收集资料那个欢乐阶段;许多心地善良的小伙子看到普宁在图书馆里挖掘资料那副样儿都感到是桩乐事和莫大的荣幸,只见他从一个综合目录柜里抽出一盒卡片,就好象它是个大核桃,把它抱到一个僻静的旮旯里去,在那儿静静地咀嚼这份精神食粮,时而抿动嘴唇,作出无声的品评,有批评性的、有满意的、有困惑不解的,时而又扬起他那两道稀疏的眉毛,久久地高高吊在宽脑门上,干脆把它忘在那儿啦,一直要等到脸上不愉快或怀疑的痕迹全部消逝之后,那两道眉毛才安然落下。他来到温代尔,的确很幸运。十九世纪九十年代有一位杰出的斯拉夫语研究家兼藏书家,名叫约翰?索斯顿?陶德(他那个带胡子的半身雕塑像如今屹立在那个饮用喷泉的上方),访问过殷勤好客的俄国,在那儿收集了大批书籍,自从他去世之后,那批书就悄悄地给挪到一个老远的书架那边去了。普宁为了避免让铁书架上的amerikanski①电流抽不冷子刺一下,会戴上橡皮手套走到那边去,贪婪地盯视那些出版物,其中有十九世纪咆哮的六十年代出版的不知名刊物啦,都用云纹硬纸板精装了起来;一百年前的历史专题著作啦,沉睡的书页上都有了褐斑霉点;俄罗斯古典文学著作啦,精装的封面上装着作者满面愁容、糟透了的浮雕像,那些诗人的侧身像叫两眼湿润的铁莫菲想起他的童年,那时候他可以悠闲自在地摸摸封面上那①俄语:美国的。

  • python涓嚱鏁鐨勪綔鐢
    绛旓細Python 鍑芥暟瀹氫箟浠ュ強鍙傛暟浼犻 1.鍑芥暟瀹氫箟 褰㈠def func(args...):doSomething123 浠ュ叧閿瓧def 寮澶达紝鍚庨潰鏄嚱鏁板悕鍜屽弬鏁颁笅闈㈡槸鍑芥暟澶勭悊杩囩▼銆備妇渚嬶細def add( a, b ):return a+b12 鍙傛暟鍙互璁惧畾榛樿鍊硷紝濡傦細def add( a, b=10 ): #娉ㄦ剰锛氶粯璁ゅ煎弬鏁板彧浼氳繍绠椾竴娆 return a+b12 榛樿鍊煎弬鏁板彧浼...
  • 绠鍗曡皥璋Python涓嚱鏁鐨勫彲鍙鍙傛暟
    绛旓細绠鍗曡皥璋圥ython涓嚱鏁扮殑鍙彉鍙傛暟 鍦≒ython涓畾涔夊嚱鏁锛屽彲浠ョ敤蹇呴夊弬鏁般榛樿鍙傛暟銆佸彲鍙樺弬鏁板拰鍏抽敭瀛楀弬鏁帮紝杩4绉嶅弬鏁伴兘鍙互涓璧蜂娇鐢紝鎴栬呭彧鐢ㄥ叾涓煇浜涳紝浣嗘槸璇锋敞鎰忥紝鍙傛暟瀹氫箟鐨勯『搴忓繀椤绘槸锛氬繀閫夊弬鏁般侀粯璁ゅ弬鏁般佸彲鍙樺弬鏁板拰鍏抽敭瀛楀弬鏁般傚彲鍙樺弬鏁( * )鍙彉鍙傛暟锛岄【鍚嶆濅箟锛屽畠鐨勫弬鏁版槸鍙彉鐨勶紝姣斿鍒楄〃銆佸瓧鍏...
  • PYthon鍏充簬浣跨敤鍑芥暟榛樿鍙傛暟鐨勯棶棰?
    绛旓細璧嬪鍑芥暟鍒嗗紑鏉ユ敼鎴愯繖鏍峰瓙
  • Python鏂规硶鐨勫嚑绉嶅父瑙鍙傛暟绫诲瀷
    绛旓細鎸鍙傛暟瀹氫箟椤哄簭涓嶆寚鍚嶄紶閫掑糾yfun('/src/image')# 鏃犺瀹氫箟椤哄簭锛岄氳繃鍏抽敭瀛楁寚瀹氬糾yfun(a='/src/image')鏃榛樿鍊煎弬鏁板湪鍑芥暟鍐呴儴浣跨敤鍏抽敭瀛椾綔涓哄彉閲忓悕鏉ヨ闂 鏃犻粯璁ゅ煎弬鏁板彲浠ユ湁澶氫釜锛屼篃鏄竴浜涘叾瀹冨弬鏁扮被鍨鐨鍩虹銆傞粯璁ゅ煎弬鏁帮細濡傛灉鍦ㄥ畾涔夋椂涓哄弬鏁版寚瀹氫竴涓粯璁ゅ硷紝閭d箞锛岃繖涓弬鏁板氨鍙互鍦ㄨ皟鐢ㄦ椂涓嶆寚瀹...
  • Python鍑芥暟閲岀殑榛樿鍙傛暟鍜屽叧閿瓧鍙傛暟鏈変粈涔堝尯鍒
    绛旓細1銆佺粷瀵瑰鍑芥暟abs()鏈変笖浠呮湁1涓鍙傛暟銆2銆乵ax()鍑芥暟鍙互鎺ユ敹浠绘剰澶氫釜鍙傛暟锛屽苟杩斿洖鏈澶鐨閭d釜銆3銆乮nt()鍑芥暟鍙互鎶婂叾浠栨暟鎹被鍨嬭浆鎹负鏁存暟 float()鍑芥暟鍙互鎶婂叾浠栨暟鎹被鍨嬭浆鎹负娴偣鏁 4銆佹暟鎹被鍨嬫鏌ュ彲浠ョ敤鍐呯疆鍑芥暟isinstance()5銆瀹氫箟涓涓嚱鏁拌浣跨敤def璇彞锛屽彲浠ヨ繑鍥炲涓硷紝浣嗗叾瀹炲氨鏄竴涓猼uple銆
  • python 涓轰粈涔榛樿鍙傛暟涓嶈兘鏀惧湪蹇呴夊弬鏁板墠闈
    绛旓細绠鍗曟潵璁插氨鏄細浜х敓姝т箟銆備笉濡ㄦ兂涓鎯筹紝濡傛灉纭疄濡備綘鎵璇达紝鏈榛樿鍊鐨勫弬鏁浣嶄簬鏃犻粯璁ゅ间箣鍓嶏紝鍒欒皟鐢ㄥ嚱鏁版椂灏卞繀椤讳娇鐢╧ey=Value鐨勫舰寮忥紝鑰屼笉鑳戒娇鐢ㄧ洿鎺ラ佸叆Value鐨勫舰寮忎簡銆備负浜嗚皟鐢ㄥ嚱鏁版椂鍙互鏇翠究鎹峰湴浣跨敤鍚庤咃紝鑰屽悓鏃跺張涓嶄骇鐢熸涔夛紝鍦瀹氫箟鍑芥暟鏃讹紝鏃犻粯璁ゅ煎弬鏁板氨蹇呴』浣嶄簬鍓嶉潰浜嗐傝冭檻鍒板畾涔夊嚱鏁板彧瑕佷竴娆★紝...
  • python鍑芥暟涓殑default鎬庝箞鐞嗚В
    绛旓細default鏄綘浼犻掕繘鍘鐨勫嚱鏁板弬鏁銆傛槸涓涓甫鏈榛樿鍊鐨勫弬鏁锛屼篃灏辨槸鍦ㄨ皟鐢ㄨ繖涓鍑芥暟鐨鏃跺欏彲浠ヤ笉鐢ㄧ粰瀹冭祴鍊笺
  • python 濡備綍鏌ョ湅鑷甫鍑芥暟鐨勯粯璁ゅ弬鏁?
    绛旓細鎸変綇 control 閿紝鐐瑰嚮 linspace ,璧颁綘锛屽氨鍙互鐪嬪埌鍑芥暟鍏蜂綋閮介渶瑕佸摢浜鍙傛暟浜
  • python涓range()鍑芥暟鐨勭敤娉
    绛旓細python涓range()鍑芥暟鐨勭敤娉曪細锛1锛塺ange(stop)鍒涘缓涓涓紙0,stop)涔嬮棿鐨勬暣鏁板簭鍒楋紝姝ラ暱涓1銆傦紙2锛塺ange(start,stop)鍒涘缓涓涓紙start,stop)涔嬮棿鐨勬暣鏁板簭鍒楋紝姝ラ暱涓1銆傦紙3锛塺ange(start,stop,step)鍒涘缓涓涓猍start,stop)涔嬮棿鐨勬暣鏁板簭鍒楋紝姝ラ暱涓簊tep銆鍙傛暟浠嬬粛锛歴tart锛氳〃绀轰粠杩斿洖搴忓垪鐨勮捣濮嬬紪鍙凤紝榛樿鎯呭喌...
  • python 榛樿鍙傛暟 鍜 鍙彉鍙傛暟
    绛旓細鍙傛暟浼犻鐨浜嬩簡銆俽ol("hello",*args)杩欓噷闈*args鍙互瑙e帇锛屽氨鏄妸鍒楄〃鎵撴暎锛岀劧鍚庡鍒剁粰鍑芥暟锛屽綋鐒鍑芥暟閲岄潰涔熸湁*args锛屾墍浠ュ張鐢熸垚浜嗕竴涓猼uple銆備笅闈㈢殑杈撳嚭缁撴灉璺熶綘鐨勪竴鏍枫傛敞鎰忔槦鍙风殑鐢ㄦ硶銆
  • 扩展阅读:python自定义函数实例 ... python中lambda的用法 ... append在python中的用法 ... format在python中的用法 ... python基础代码大全 ... python replace函数用法 ... eval在python中的用法 ... python中eval表示什么 ... python中定义函数时注意事项 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网