5. Python 函數
函數:(方法、功能)
作用:1、提高代碼的復用性,2、讓代碼更簡潔
函數命名方法
函數不調用是不會被執行的
def calc(a,b): #形參
#位置參數,必填,否則報錯
res = a * b
print('%s * %s = %s' %(a,b,res))
calc(7,8) #實參
def op_file(file_name,conent=None):
#默認值參數,默認conent=None,非必填,如果未傳,則打印None
# print(file_name)
# print(conent)
f = open(file_name,'a+',encoding='utf-8')
f.seek(0)
if conent:
f.write(conent)
f.flush()
else:
print(f.read())
f.close()
op_file('a.txt','aaa')
op_file('a.txt')
#局部變量:只在函數里面使用
以上代碼中,不能將讀取的數據取出來。可用return返回出結果。
def op_file(file_name,conent=None):
#默認值參數,默認conent=None,非必填,如果未傳,則打印None
# print(file_name)
# print(conent)
f = open(file_name,'a+',encoding='utf-8')
f.seek(0)
if conent:
f.write(conent)
f.flush()
else:
all_users = f.read()
return all_users #調用完函數之后,返回什么結果
f.close()
# op_file('a.txt','aaa')
res = op_file('a.txt') #將返回的函數寫到res里面
print(res)
return的作用
1、把函數處理的結果返回回來
2、結束函數,函數里面遇到return,函數會立即結束。
3、如果return 后面不帶參數,則返回None,用于結束函數
def haha():
for i in range(5):
print(i)
if i == 3:
return
res = haha()
print(res)
沒有寫return的時候,默認返回None
def check(pwd):
#長度6-11
#包含字母和數字
import string
if len(pwd) >5 and len(pwd)<12:
if set(pwd) & set(string.ascii_letters) and set(pwd ) & set(string.digits):
print('密碼合法')
else:
print('密碼不合法')
else:
print('密碼不合法')
res = check('123') #沒有寫return的時候,默認返回None
print(res)
函數之間是可以互相調用的
常量:就是一個不變的值,一般,常量名全是大寫字母
全局變量:公共的變量,都可以用的變量
如果要改全局變量的話,那你要先聲明一下(global),修改的是全局變量
盡量少用全局變量,因為:
1、不安全,所有人都可以改,多個人寫代碼時可能互相影響。
2、全局變量會一直占著內存
函數傳參方式,也可以指定形參傳值,不用根據形參順序依次傳。
函數不固定參數
def syz(*args): #參數組,不確定參數數量,args只是一個變量名
print(args)
syz() #()
syz('aaa','bbb','ccc') #('aaa', 'bbb', 'ccc')
syz('dd') #('dd',)
syz(123) #(123,)
1、參數非必填
2、參數數量無限制
3、把傳過來的參數放到元組中
也可以傳一個形參,一個不固定參數。
def syz(a,*args):
pass
關鍵字參數
def syz2(**kwargs):
print(kwargs)
syz2() #{}
syz2(name = 'pzp',age = 38) #{'name': 'pzp', 'age': 38}
syz2(name = 'pzp',age = 38,addr = '回龍觀',home = 'HZ') #{'name': 'pzp', 'age': 38, 'addr': '回龍觀', 'home': 'HZ'}
syz2('nhy') #報錯
1、參數非必填
2、參數數量無限制
3、把傳過來的參數放到字典中,要采用k = v 的格式。
def syz2(time,**kwargs):
print(kwargs)
syz2('2018')
syz2(name = 'pzp',age = 38,time = '2018')
syz2('2018',name = 'pzp',age = 38,addr = '回龍觀',home = 'HZ')
遞歸調用
函數自己調用自己,寫代碼時少用遞歸,效率沒有循環高,而且最多遞歸999次,999次之后會報錯。
def test1():
num = int(input('please enter a number:'))
if num%2 == 0:
return True #如果是偶數的話,程序就退出了,返回true
print('不是偶數請重新輸入')
return test1() #如果不是偶數的話繼續調用自己,輸入值
print(test1()) #調用test1()
循環999次報錯
i = 0
def test():
global i
i +=1
print(i)
test()
print(test())
test()
內置函數
python自帶的一些函數,直接拿過來用
id() #
type()
print()
input()
list()
set()
str()
dict()
float()
print(all([1,2,3,4]))#判斷可迭代的對象里面的值是否都為真
print(any([0,1,2,3,4]))#判斷可迭代的對象里面的值是否有一個為真
print(bin(10).replace('0b',''))#十進制轉二進制,
print(bool('s'))#把一個對象轉換成布爾類型
print(chr(10))#打印數字對應的ascii
print(ord('b'))#打印字符串對應的ascii碼
print(dir(1))#打印傳入對象的可調用方法
print(exec('def a():pass'))#執行python代碼 ipython Terminal
exec('def a():print("aaa")')
a = eval('[1,2,3,4]') #yeshi yonglai zhix python代碼的,只能執行簡單的代碼,比如運算等’
print(a)
print(filter(lambda x:x>5,[12,3,12,2,1,2,35]))#把后面的迭代對象根據前面的方法篩選
print(map(lambda x:x>5,[1,2,3,4,5,6]))
print(max(111,12))#取最大值
print(min(111,12))#取最小值
print(abs(-111))#取絕對值
print(round(11.11,2))#取幾位小數
print(sorted([2,31,34,6,1,23,4]))#排序

浙公網安備 33010602011771號