首页 > 编程语言 > 详细

python学习笔记(四)-- 函数

时间:2019-04-22 11:58:33      阅读:119      评论:0      收藏:0      [点我收藏+]

局部变量VS全局变量

局部变量--定义在函数里面的变量,只能在函数里面使用,在函数外面不能使用
全局变量--作用于整个程序

数据类型: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

函数形参有四种类型:

#1、必填参数(位置参数)
#2、默认值参数
#3、参数组
#4、关键字参数
位置参数
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)
#传入参数时,顺序是1、位置参数2、默认值参数3、可变参数4、关键字参数
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‘)

定义形参时可以指定参数类型,但并不一定要按照指定的数据类型传参

def add_user(username:str,password:str):#指定参数数据类型
    print(username,username)
    print(password,password)
add_user([12,3,4],1111)

递归调用

#判断输入的数字是不是偶数
def even():
    num = input(请输入一个数字:).strip()
    if int(num)%2 != 0:
        print("请重新输入")
        even()#递归调用自己
even()

python学习笔记(四)-- 函数

原文:https://www.cnblogs.com/yanyan-/p/10749191.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!