在这个用例中,我们要讨论的是将参数传递给函数的问题
我所使用的python版本为3.3.2
对于函数:
def fun(arg):
print(arg)
def main():
fun('hello,Hongten')
if __name__== '__main__':
main()
这里打印的信息为:
hello,Hongten
对于下面的用例:
def fun(a=1, b=None, c=None,*args):
print('{0},{1},{2},{3}'.format(a, b, c, args))
def main():
fun(a='one')
fun('one')
if __name__== '__main__':
main()
当传递的参数为:fun(a='one') 和 fun('one') 都是将值复制给参数a,两种传递参数的效果是一样的:
one,None,None,()
one,None,None,()
当然我们也可以给参数:b,c,*args赋值
如:
def fun(a=1, b=None, c=None,*args):
print('{0},{1},{2},{3}'.format(a, b, c, args))
def main():
fun('one',1,2,('hongten'))
if __name__== '__main__':
main()
这样我们就给参数:b,c,args赋上了值
运行效果:
one,1,2,('hongten',)
在上面的例子中,我们不能绕过参数*args前面的参数a、b、c复制到*args中:
如:
def fun(a=1, b=None, c=None,*args):
print('{0},{1},{2},{3}'.format(a, b, c, args))
def main():
fun(args=('hongten'))
if __name__== '__main__':
main()
运行效果:
Traceback (most recent call last):
File "E:/Python33/python_workspace/test_fun.py", line 21, in <module>
main()
File "E:/Python33/python_workspace/test_fun.py", line 18, in main
fun(args=('hongten'))
TypeError: fun() got an unexpected keyword argument 'args'
但是对于参数:a,b,c,可以这样赋值
如:
def fun(a=1, b=None, c=None,*args):
print('{0},{1},{2},{3}'.format(a, b, c, args))
def main():
fun(c=('hongten'), b=2, a=[1,2,3])
if __name__== '__main__':
main()
运行效果
[1, 2, 3],2,hongten,()
本文为原创文章,版权归知行编程网所有,欢迎分享本文,转载请保留出处!
你可能也喜欢
- ♥ python支持哪些数据库09/12
- ♥ 如何安装python web.py12/31
- ♥ 如何在 Mac 上查找 python 路径10/08
- ♥ 在python中对列表进行排序的两种方法08/18
- ♥ python安装后无法运行怎么办09/26
- ♥ python ChainMap的管理用法12/30
内容反馈