lee-romantic 's Blog
Everything is OK!
Toggle navigation
lee-romantic 's Blog
主页
About Me
归档
标签
python函数的参数
2018-10-21 22:18:36
272
0
0
lee-romantic
python作为一个动态语言其函数的参数也很“动态”。 参数可能有的情况:必选参数、默认参数、可变参数、关键字参数、命名关键字参数 `` function(a,b=1,*c,**d,*,e)`` #1.位置参数(正常传参) 就是固定的参数,函数中定义多少个参数,调用函数的时候后就传递多好个参数。 ``` #1.正常参数 def power(x,n): sum=0 while(n>1): sum=sum+x*x n=n-1 return sum print(power(2,5))#输出16 ``` #2.默认参数(给定一个默认值) 首先注意: (1)默认参数要放在最后面,不然会有误会,编译器不知道从哪个数开始算他不是默认参数 (2)默认参数必须指向不变对象 当函数中有部分参数的值在大部分时间是固定的时候,可以预先给它一个值。不用每一次都输入。当然有特殊情况的时候依然可以给它附一个新的值。 ``` #2.默认参数 def power(x,n=5): sum=0 while n>1: sum=sum+x*x n=n-1 return sum print(power(2))#输出16 ``` #3.可变参数(*加参数名,表示此参数可变) 第1种方式: 可变的参数指的是列表(list),元组(tuple).因为其中的数据是可以改变的,将列表和元组作为参数传入函数中,所以函数的参数也是可变的。要定义可变参数,仅需在参数名之前添加一个星号(*)。在函数内部,这些参数被包装为一个 tuple 例如:power函数 使用 * 放在参数名前,作为可变参数的标志 ``` ## 3,可变参数,表示参数可以改变,比如下面的*number,相当于构成了一个tuple,这个tuple的名字是number def calc(*number): sum =0 for n in number: print(n) print(number) return sum number1=[1,5,6,7] number2=[8,9,11,34] print(calc(number1,number2[1],3,4)) # 所有的参数构成一个tuple ``` 输出: ``` [1, 5, 6, 7] 9 3 4 ([1, 5, 6, 7], 9, 3, 4) 0 ``` 有时,必须在函数定义中使用位置参数以及可变参数,但位置参数始终必须在可变参数之前。 ``` def greet(say, *names): print(say, names) greet('Hi') ``` 输出``Hi`` ``` greet('Hi', 'Jordan', 'James', 'Kobe') ``` 输出``Hi ('Jordan', 'James', 'Kobe')`` 通常情况下,可变参数会出现在形参列表的最后,因为它们会把传递给函数的所有剩余输入参数都收集起来。可变参数之后出现的任何形参都是“强制关键字”参数,这意味着,它们只能被用作关键字参数,而不能是位置参数。 ``` # * 后面的参数,都必须通过关键字参数赋值 def info(name,*,zhuangtai): print(name,zhuangtai) info(11,zhuangtai='23') #info(11,'23') #错误 ``` 正如“可变参数”那样,也可在函数调用中使用 * 操作符。只不过在这种情况下,与在函数定义中 * 的语义相反,参数将被解包而不是打包。 ``` >>> def greet(name, age): print(name, age) >>> t = ('James', 18) >>> greet(*t) James 18 ``` ``` # * 星号相当于取值,解包 def num(num1,num2,num3,num4,num5): print(num1,num2,num3,num4,num5) number=[1,2,3,4,5] num(*number) #输出1 2 3 4 5 ``` #4.关键字参数(**加参数名,可以传入不同的参数) 函数可以传入不指定个数的参数。 可变参数允许你传入0个或任意个参数,这些可变参数在函数调用时自动组装为一个tuple。而关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict。 当想要多传参数的时候,需要带上参数名。也可以先组成一个dict ,当做参数传进去 ``` #关键字参数,kargs相当于是一个字典 def show(**kargs): print(kargs) show(name='lb',date=2018) #调用时相当于在为字典kargs,创建变量 输出的是一个字典: {'name': 'lb', 'date': 2018} ``` 相当于: ``` def show(name,date): print(name,date) show(name='lb',date=2018) 输出两个变量: lb 2018 ``` 同样地,字典也可以用 ** 操作符传递关键字参数: ``` >>> def greet(name, age = 18): ... print(name, age) ... >>> >>> d = {'name':'James', 'age':32} >>> greet(**d) James 32 ```
上一篇:
CrossEntropyLoss和NLLLoss的理解
下一篇:
Python笔记:Zip和Enumerate
0
赞
272 人读过
新浪微博
微信
腾讯微博
QQ空间
人人网
提交评论
立即登录
, 发表评论.
没有帐号?
立即注册
0
条评论
More...
文档导航
没有帐号? 立即注册