python 05.29

1.函数

把重复代码写成一个通用模板:把冗余的代码独立开。

我们的函数就是工具 ,把工具事先准备好,然后下次使用的时候直接调用就行。

def 函数名():

代码块 #实现某一个具体的功能

def login():
    """登录功能"""
    username = input('请输入你的用户名>>>').strip()
    pwd = input('请输入你的密码').strip()

    user_dict = dict()
    with open('userinfo.txt','r',encoding='utf8') as fr:
        for  user in fr:
            user_list = user.strip().split(':')
            user_dict[user_list[0]] = user_list[1]

    if username in user_dict and pwd == user_dict.get(username):
        print('登录成功')

函数的定义分为两个阶段:

定义:本来报错的不会报错,定义阶段只识别语法,不运行代码

调用:执行函数体代码

2.定义函数的三种形式

函数只是一种工具,干活的具体的实现都是靠if/while/for+变量,函数只是是你干活更轻松。

无参函数

ef self_max():
    x, y = 10, 20
    if x > y:
        print(x)
    else:
        print(y)

有参函数,定义几个参数,就必须传入几个参数

def self_max(x, y):
    if x > y:
        print(x)
    else:
        print(y)

self_max(100,500)

空函数

def self_max():
    pass

self_max()

3.函数的返回值

def self_max(x,y): 
    if x> y:
        return x 
    else:
        return y

函数名相当于变量名,用于接收函数的返回值。

def get_list():
    return [1,2,3,4],2
    return None #返回值为None

return的语法:

①return可以返回默认值None:

②return可以返回任意数据类型:

③当return返回多个值的时候,会以元组的形式把多个值包在一起:

④return会终止函数。

4.函数对象

python中一切皆对象。

def self_max(x, y):
    if x > y:
        return x
    else:
        return y

def max_4num(x, y, a, b):
    res1 = self_max(x, y)
    res2 = self_max(res1, a)
    return self_max(res2, b)

res = max_4num(1,5,9,13)
print(res)

5.函数参数的应用

函数的定义分为两个阶段:

定义阶段:定义阶段的参数x,y 被称为形参,形参具有描述意义,类似于变量名,不为具体的数据类型,

调用阶段:调用阶段的参数x,y被称为实参,实参必须是具体的数据类型

def self_max(x, y):  # 位置形参
    if x > y:
        return x  
    print(233)
    return y

默认形参**,在函数被定义时,提前赋值给形参,当实参重新传入值时,会覆盖原先的形参。

值不需要改变,并且经常使用,默认形参必须在位置形参后面

关键字实参

用在函数调用阶段,找到形参的对应关系,并赋值给形参,形参名是什么则关键字的形参名必须是什么。

当参数较多时可使用关键字实参,关键字实参在位置实参后面。

(位置形参,默认形参,关键字形参)

6.可变长参数

def self_max(a,b,c,d,e,f,g,h,k,x=1,y=3,z=4):  # 默认参数
    print(a,b,c,d,e,f,g,h,k,x,y,z)

a= [1,2,3,4,5,6,7,8,9]  # *把这个列表内的元素一个一个取出来,然后一个一个传给这个函数
b = {'x':10,'y':12}  # **会把这个字典打散成键值对的形式作为实参传给函数
self_max(*a,**b)  # 可变长实参 # (1,2,3,4,5,6,7,8,9,x=10,y=12)
# self_max(1,2,3,4,5,6,7,8,9) # *a的作用
# self_max(x=10,y=12)   # **b的作用

# 可变长形参

def self_max(*args,**kwargs):
    print(args)  #*a接受了所有位置实参,然后以元祖的形式保存下来,只接受位置参数,不接受关键字实参
    print(kwargs)  # **b接收所有的关键字实参,然后以字典的形式保存下来
self_max(1,2,3,4,5,6,7,x=6,y=8,z=20,a=10,c=1000)

# *后面必须得写args,**后面必须得写kwargs,约定俗成的一种规范
posted @ 2019-05-29 20:34  海森t  阅读(48)  评论(0)    收藏  举报