函式,可變引數及全域性變數和區域性變數

2021-09-12 02:16:19 字數 1970 閱讀 8039

預設引數,預設引數,放在引數的最後的最後面

def info(name,age,gender,city='hz'):

''':param name:

:param age:

:param gender:

:param city:預設引數

:return:

'''print('name:',name)

print('age:',age)

print('gender:',gender)

預設引數不可以使用可變引數,會保留上一次的結果,在後面一直追加結果

def f(x,l=):

for i in range(x):

print(l)

f(3)

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

f(3)

f(4)

help(print)

print(print.doc)魔法方法

將所有位置引數的打包成元組

def person_info(*args):

''':param args:

:return:

'''print(args)

for i in args:

print(i)

person_info(12,13,'zhang')

person_info(1)

person_info(1,2,4,5,6,7,8,9,12,15)

將所有的關鍵字引數打包成字典

def person_info(**kwargs):

''':param kwargs:

:return:

'''print(kwargs)

person_info(name='xiaowang',age=18)

person_info(age=18)

函式引數的混合運用以及*的作用

def sum_num(a,*args,c=7,**kwargs):

print(a)

print(c)

print(args)

print(*args)

#直譯器拆包傳遞

print(kwargs)

for key,value in kwargs.items():

print('key',key,'value',value)

sum_num(1,2,3,c=5,m=4,n=5)

#順序(位置引數,args,預設值引數,kwargs)

'''*的作用'''

def info(name,age,gender):

print(name,age,gender)

a = ['zhang1',19,'boy']

b = ['zhang2',1,'boy']

c = ['zhang3',9,'boy']

info(a[0],a[1],a[2])

info(*b)

#*自動拆包,挨個傳遞(引數的個數要相等)

全域性變數和區域性變數

name='zhang'

def info1():

#區域性變數

name='wang'

print(name)

def info2():

'''這個函式實現全域性變數的功能

:return:

'''global name

name='******x'

print(name)

def info3():

print(name)

info1()

info2()

info3()

l(區域性命名空間) e(外部巢狀函式) g(全域性命名空間) b(內建命名空間)

盡量不要使用同名的變數

static全域性 區域性變數,全域性變數及區域性變數

1 static變數和全域性變數都是分配在 靜態儲存區 2 static全域性變數 static區域性變數 全域性變數和區域性變數區別 他們都是分配在 靜態儲存區內,都是在程式開始的時候初始化的,他們的區別是作用域不同,static全域性變數作用域是在申明所在的檔案中,而全域性變數是全域性的,其他檔...

全域性變數和區域性變數

全域性變數 可以被不同的函式 類或檔案呼叫的變數,在函式外定義。區域性變數 只能在函式內使用,定義在函式內。區域性變數的使用 class myclass def myfun num 12 print myfun num num 正確 def myfun2 num num 1 print mufun ...

全域性變數和區域性變數

區域性變數 在方法中開闢的變數,只在方法中有效 區域性變數在定義時不會初始化,要顯式的給它乙個值 如未給它乙個初始值,雖然編譯的時候會通過,但是執行的時候會產生為初始化錯誤!方法呼叫 執行完,區域性變數便會自動釋放。在方法內的語句塊中建立的變數在編譯時假如未初始,如若使用,也會報未初始化錯誤!呼叫的...