函數mysql
#定義一個函數,包括函數名,函數體,參數 def calc(a,b):#形參 return a+b #返回值,函數遇到return自動結束 result = calc(1,3)#函數調用 print(result) #實例----判斷輸入的是不是合法的小數 #一、判斷是否只有一個小數點 #二、正小數,以小數點進行分隔,左邊是一個整數,右邊也是一個整數 #三、負小數,右邊是整數,左邊以負號開頭,只有一個負號,負號後面是小數 def check_float(number): number = str(number)#轉化成字符串 if number.count('.') == 1: left,right = number.split('.') #用兩個變量接收兩個元素 # print(number) #判斷正小數 if number[0].isdigit() and number[1].isdigit(): print("輸入的價格正確") return True #判斷負小數 elif number[0].startswith('-') and number[0][1:].isdigit() and number[1].isdigit(): print("輸入的價格正確") return True #除了正小數負小數,其他狀況都會走到這裏 return False
局部變量VS全局變量git
局部變量--定義在函數裏面的變量,只能在函數裏面使用,在函數外面不能使用
全局變量--做用於整個程序
數據類型:int str tuple #不可修改的變量須要經過global聲明才能在函數裏面修改全局變量
數據類型:list dict set #能夠修改的變量不須要global,直接可修改
1 #在函數內修改全局變量,須要用global聲明
2 money = 500
3 def func(): 4 global money#聲明全局變量
5 money += 100
6 return money
函數形參有四種類型:sql
#一、必填參數(位置參數)
#二、默認值參數
#三、參數組
#四、關鍵字參數
位置參數
1 調用函數的時候,能夠所有都用位置參數,位置是一一對應的,必須按照位置來傳 2 def xxx(name,age,sex,addr,phone,qq,mail): 3 print(name,age,sex) 4 #位置參數
5 xxx('xiaomi',12,'m','cd',12346,3322323,'11@aa.com')
關鍵字參數
1 調用函數時,能夠位置參數與關鍵字參數一塊兒使用,位置參數必須在前面 2 def xxx(name,age,sex,addr,phone,qq,mail): 3 print(name,age,sex) 4 #關鍵字參數
5 xxx('xiaomi',11,'f',addr='cd',phone=13113,mail='fewwef',qq=121212)
默認參數
1 #默認值參數在定義形參時給它賦一個默認值,若是函數調用時沒傳參數,則用默認值,傳了參數則用傳入值
2 def op_file(file, content=None): 3 if content: 4 with open("a.txt",'w') as f: 5 f.write(content) 6 else: 7 with open('a.txt') as f: 8 res = f.read() 9 return res 10 op_file('a.txt','hello') 11 print("讀文件",op_file('a.txt'))
參數組
1 #參數前面加*,參數是一個元組
2 def send_mail(*names): 3 for name in names: 4 print("給%s發測試郵件!"%name) 5 send_mail() 6 send_mail('xiaomi') 7 send_mail('xiaomi','xiaohei','ewiiew')
1 # 兩個*號,關鍵字傳參,參數存成一個字典
2 def xiaomi(**info): 3 print(info) 4 xiaomi() 5 xiaomi(name = '123',addr='233')
#參數例子
def xiaomi(name,age=None,*args,**kwargs): print(name) print(age) print(args) print(kwargs) #傳入參數時,順序是一、位置參數二、默認值參數三、可變參數四、關鍵字參數
xiaomi('xiaobai',18,'cd','sh',money=500,func='xiaobai')
傳入參數爲list或者dict數組
def op_mysql(host,port,user,passwd,db): print(host) print(port) print(user) print(passwd) print(db) db_info = ['127.0.0.1','3306','root','123456','szz'] db_info2 = {'host':'127.0', 'port':'3306', 'user':'root', 'passwd':'123456', 'db':'szz'} op_mysql(*db_info) #解包,把list元素分別傳入函數,也能夠是字符串等有下標的數據類型
op_mysql(**db_info2)#把字典元素分別傳入函數
函數返回值函數
return:返回函數結果;函數體內遇到return結束函數測試
#函數有多個返回值時,返回的是一個元組
def get_file(age,name,addr): age += 5 name = 'szz_' + name addr = 'cd_' + addr return age,name,addr res = get_file(19,'xiaobai','ccc') print(res)
結果:(24, 'szz_xiaobai', 'cd_whc')
定義形參時能夠指定參數類型,但並不必定要按照指定的數據類型傳參spa
def add_user(username:str,password:str):#指定參數數據類型
print('username',username) print('password',password) add_user([12,3,4],1111)
遞歸調用code
#判斷輸入的數字是否是偶數
def even(): num = input('請輸入一個數字:').strip() if int(num)%2 != 0: print("請從新輸入") even()#遞歸調用本身
even()