python学习笔记(四)-- 函数、参数类型、递归调用

函数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()
相关文章
相关标签/搜索