python開發_函數的參數傳遞


在這個用例中,我們要討論的是關於函數的傳參問題
我所使用的python版本為3.3.2

對於函數:

1 def fun(arg):
2     print(arg)
3 
4 def main():
5     fun('hello,Hongten')
6 
7 if __name__ == '__main__':
8     main()

當我們傳遞一個參數給fun()函數,即可打印出傳遞的參數值

信息。

這里打印的信息為:

hello,Hongten

對於下面的用例:

1 def fun(a=1, b=None, c=None, *args):
2     print('{0},{1},{2},{3}'.format(a, b, c, args))
3 
4 def main():
5     fun(a='one')
6     fun('one')
7 
8 if __name__ == '__main__':
9     main()

當傳遞的參數為:fun(a='one')和fun('one')這樣的傳參都是把值復制給參數a,所有兩種傳參的效果是一樣的:

one,None,None,()
one,None,None,()

當然我們也可以給參數:b,c,*args賦值

如:

1 def fun(a=1, b=None, c=None, *args):
2     print('{0},{1},{2},{3}'.format(a, b, c, args))
3 
4 def main():
5     fun('one',1,2,('hongten'))
6 
7 if __name__ == '__main__':
8     main()

這樣我們就給參數:b,c,args賦上了值

運行效果:

one,1,2,('hongten',)

在上面的列子中,我們不能繞開參數*args前面的參數a,b,c給*args復制:

如:

1 def fun(a=1, b=None, c=None, *args):
2     print('{0},{1},{2},{3}'.format(a, b, c, args))
3 
4 def main():
5     fun(args=('hongten'))
6 
7 if __name__ == '__main__':
8     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來說,是可以使用這樣的方式進行賦值

如:

1 def fun(a=1, b=None, c=None, *args):
2     print('{0},{1},{2},{3}'.format(a, b, c, args))
3 
4 def main():
5     fun(c=('hongten'), b=2, a=[1,2,3])
6 
7 if __name__ == '__main__':
8     main()

運行效果:

[1, 2, 3],2,hongten,()

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM