循環(huán)
for...in...循環(huán)
語法:for 變量 in 容器:
for循環(huán)也可以稱之為遍歷
str = "這周末母親節(jié)別再問你媽需要什么了,她可能需要的是像我這樣的女婿"
for var in str:
print(var)
# for循環(huán)列表
list1 = ["魯智深","孫悟空","唐僧","沙和尚","八戒"]
for var in list1:
print(var)
# for循環(huán)元組
tuple1 = ("魯智深","孫悟空","唐僧","沙和尚","八戒")
for var in tuple1:
print(var)
# for循環(huán)集合
set1 = {"魯智深","孫悟空","唐僧","沙和尚","八戒"}
for var in tuple1:
print(var)
# for循環(huán)字典
dict = {"斗戰(zhàn)勝佛":"孫悟空","凈壇使者":"八戒","金身羅漢":"沙和尚","功德佛":"唐僧"}
for key in dict:
print(key)
for value in dict:
print(dict[value])
for value in dict.values():
print(value)
for key,value in dict.items():
print(key,value)
# 二級嵌套的循環(huán)
list1 = [
["a","b","c"],
["1","2","3"],
["A","B","C"]
]
for a,b,c in list1:
print(a,b,c)
tuple1 = (
("a","b","c"),
("1","2","3"),
("A","B","C")
)
for a,b,c in tuple1:
print(a)
for var in tuple1:
print(var)
for var in range(100):
if var == 33:
pass
elif var == 55:
pass
elif var == 77:
pass
else:
print(var)
函數(shù)
語法
def 函數(shù)名(參數(shù)1,參數(shù)2逞力,參數(shù)3...參數(shù)n):
? 功能語句
? return 表達式
函數(shù)名(參數(shù)1,參數(shù)2糠爬,參數(shù)3...參數(shù)n)
- def 這個是定義函數(shù)的關(guān)鍵字寇荧,當Python檢測到你的代碼里邊有
def
這三個字母,那么Python就認為你要定義函數(shù) - 函數(shù)名:要遵循變量的定義規(guī)則
- ():括號是用來傳遞參數(shù)的秩铆,括號內(nèi)的參數(shù)必須用逗號分開砚亭,在定義函數(shù)的時候傳遞的參數(shù)叫做形式參數(shù)(形參),調(diào)用函數(shù)時傳遞的參數(shù)是實際參數(shù)(實參)
- 功能語句:需要函數(shù)打包的功能
- return:返回值殴玛,返回給函數(shù)調(diào)用者的值捅膘,如果沒有返回值,函數(shù)無意義
- 表達式:返回給函數(shù)調(diào)用者的信息滚粟, 表達式可以為空寻仗,如果為空,默認返回一個None
- 函數(shù)調(diào)用:函數(shù)名()凡壤,注意:括號不要丟掉署尤,不帶括號表示函數(shù)對象
def name():
print("周瑜打黃蓋,看誰跑得快亚侠!")
name()
# 函數(shù)的執(zhí)行順序曹体,當不調(diào)用函數(shù)時不會執(zhí)行,當調(diào)用時按內(nèi)部代碼順序執(zhí)行
def foo():
m = 1
def foo1():
m = 2
print(m)
print(m)
foo1()
print(m)
foo()
def mut99():
#打印九九乘法表
i = 1
while i < 10:
j = 1
while j <= i:
print("%sx%s=%s"%(i,j,i*j),end=" ")
j += 1
print()
i += 1
# 調(diào)用函數(shù)
mut99()
# 我們在定義函數(shù)的時候傳遞的參數(shù)叫做形參
def name(user):
print("hello ",user)
name("jack")
# 在調(diào)用函數(shù)的時候傳遞的參數(shù)叫做實參
name("rose")
- 多個參數(shù):
- 位置參數(shù):我們傳遞的實參是和形參一一對應(yīng)關(guān)系
- 關(guān)鍵字參數(shù):我們傳遞的實參如果和形參順序不一致硝烂,那么我們的實參需要添加關(guān)鍵字來調(diào)整形參的值的順序
- 默認值參數(shù):我們在定義函數(shù)的時候可以給形參一個默認值箕别,但是,默認值參數(shù)必須放到參數(shù)列表的最后,如果帶默認值的參數(shù)在函數(shù)調(diào)用的時候又一次被賦值串稀,那么就會覆蓋掉默認值參數(shù)的值
def name(f_name, l_name="rose"):
print(f_name + " " + l_name)
name("ada")
def operation(a,b,c,d):
sum1 = a+b+c+d
return sum1
op = operation(1,2,3,4)
print(op)
全局變量和局部變量
- global 關(guān)鍵字
- global 關(guān)鍵字后面的變量會被提升為全局變量
- 函數(shù)內(nèi)的局部變量無法在函數(shù)外單獨調(diào)用
A = "我是全局變量A"
def name():
global B
B = "我是局部變量B"
print(A)
print(B)
name()
print(A)
print(B)
A = "我是全局變量A"
def name():
A = "我是局部變量A"
print(A)
name()
不定長參數(shù)
- 普通參數(shù):
- 可以接收關(guān)鍵字
- 順序是一一對應(yīng)的
- 帶默認值的參數(shù)要放到最后
def operation(a,b,c,d,e):
sum1 = a + b + c + d + e
return sum1
op = operation(1,2,3,4,5)
print(op)
- 不定長參數(shù):
- 可以接收多個沒人接收的參數(shù)
- 不能接收關(guān)鍵字參數(shù)
- 以元組的形式接收
# 不定長參數(shù)(參數(shù)收集)
def operation(*args):
sum1 = 0
for var in args:
sum1 += var
return sum1
op = operation(1,2,3,4,5,6,7,8,9)
print(op)
# *args 垃圾回收站 不能接收關(guān)鍵字參數(shù)
# def operation(a,b,c,d,*args):
# print(a)
# print(b)
# print(c)
# print(d)
# print(args)
# operation(1,2,3,4,5,6,7,8,9)
- 不定長關(guān)鍵字參數(shù):
- 可以接受關(guān)鍵字參數(shù)除抛,以字典的形式接收
- 注意:三種參數(shù)盡量避免一起使用
# 接收不定長關(guān)鍵字參數(shù)
def operation(**kwargs):
print(kwargs)
operation(a=1,b=2,c=3)
# 傳遞參數(shù)順序:普通參數(shù),不定長參數(shù)母截,不定長關(guān)鍵字參數(shù)
def operation(A,B,C,D,*args,**kwargs):
print(A,B,C,D)
print(args)
print(kwargs)
operation(1,2,3,4,5,6,7,a=1,b=2,c=3)
list1 = ["1","2","3","4","5"]
for i in list1:
for j in list1:
for k in list1:
if i != j and i != k and j != k:
print(i+j+k)
函數(shù)嵌套和閉包
- 閉包:內(nèi)部函數(shù)使用外部函數(shù)的局部變量到忽,那么我們就稱內(nèi)部函數(shù)為閉包
- 閉包就是調(diào)用一個函數(shù),它返回了另一個函數(shù)給你 那么返回的這個函數(shù)就叫做閉包
def outer(num):
def inner(val):
return num + val
return inner
res = outer(10) #outer(10) ===> inner res = inner
result = res(10) #res(10) == inner(10)
print(result)
# 閉包引用外部函數(shù)的局部變量的前提是:內(nèi)部沒有這個變量
def outer():
a = [1]
def inner():
a[0] = a[0] + 1
return a[0]
return inner
res = outer()() # outer() == inner outer()() == inner()
print(res)