python3 函數
阿新 • • 發佈:2018-06-12
python函數
形式參數:
實際參數:固定數參數
默認參數:給參數一個默認值,賦予新值時覆蓋默認值。
位置參數:sys.argv[XX]
代碼名稱、函數、變量不可以與系統默認參數、模塊名字相同
if __name__ == ‘__main__‘:
__name__:
在主動調用的時候返回__main__(意思就是主動調用這個函數)
在被動調用的時候返回__foo__(像導入模塊的時候,順帶到這個地方,並不是要執行它的時候返回foo)
所以在if __name__ == ‘__main__‘:下面的代碼是屬於在主動調用的時候才執行。
前向引用:
def foo():
print(‘in foo‘)
bar() #此時函數的內容並沒有執行,當調用的時候才開始真正的執行函數
#foo() 如果這個時候調用foo()函數的話,會報錯,因為bar函數還沒有生成
def bar():
print(‘in bar‘)
foo()
內部函數/內嵌函數:
def foo():
print(‘in foo‘)
def bar():
print(‘in foo-bar‘)
bar()
foo()
#函數bar()只能在foo函數內部調用,foo函數結束bar則結束,類似於局部變量的意思
函數操作符:
使用一對圓括號()調用函數,如果沒有圓括號,只是對函數的引用
任何輸入的參數都必須放置在括號中
調用:把函數執行一遍
引用:把函數本身指向引用者
>>> def func():
... return ‘hello wlrkd‘
...
>>> a = func()
>>> b = func
>>> a
‘hello wlrkd‘
>>> b
<function func at 0x7f90fc1afe18>
>>> b()
‘hello wlrkd‘
關鍵字參數:
關鍵字參數的概念僅僅針對函數的調用
這種理念是讓調用者通過函數調用中的參數名字來區分參數
這樣規範允許參數缺失或者不按順序
def get_ingo(name, age):
print(‘%s is %s years old‘ % (name, age))
get_ingo(‘bob‘, 23)
get_ingo(23, ‘bob‘)
get_ingo(age=23, name=‘bob‘)
#get_ingo(age=23, ‘bob‘) #錯誤,關鍵字參數必須在後
#def func(age=23, name): #錯誤,定義函數時,有默認值的參數必須在後
# get_ingo(23, name=‘bob‘) #錯誤,name變量得到了多個值
# get_ingo(‘bob‘, 23, 24) #錯誤,調用函數時,實參個數要與形參個數相同
get_ingo(‘bob‘, age=23)
參數組:
python允許程序員執行一個沒有顯示定義參數的函數
相應的方法是通過一個把元組(非關鍵字參數)或字典(關鍵字參數)作為參數組傳遞給函數
def get_args(*args): #一個*號代表以元組形式接收參數
print(args)
def get_kwargs(**kwargs): #兩個*號代表以字典形式接收參數
print(kwargs)
def get_info(name, age):
print(‘%s is %s years old‘ % (name, age))
if __name__ == ‘__main__‘:
get_args()
get_args(‘abc‘)
get_args(10, 20,30, 40)
get_kwargs()
get_kwargs(name=‘bob‘, age=25)
info = [‘bob‘, 23]
get_info(*info) #在實參傳遞的時候以一個*號,代表字符串字符串、元組、列表
info_dict = {‘name‘:‘azj‘, ‘age‘:25}
get_info(**info_dict) #兩個*號代表的是字典的含義,將字典進行傳遞
()
(‘abc‘,)
(10, 20, 30, 40)
{}
{‘name‘: ‘bob‘, ‘age‘: 25}
bob is 23 years old
azj is 25 years old
python3 函數