函数

什么是函数

定义一个事情或者是功能,等到需要的时候直接去用就好了.那么这里定义东西就是一个函数

函数:对代码块和功能的封装和定义

 

函数的定义

def 函数名():
    函数体

我们使用def关键字来定义函数,函数的定义语法,这里的函数名的命名规则和变量的命名规则一样.自己回顾一下变量的命名规则

函数体:就是函数被执行之后要执行的代码

 

 

函数的调用

函数名后面加小括号       写法:函数名()

def ma(name,age,addr):     #调用约参
    print(f"{name},{age},{addr}")
  

ma(
'啊啊','三四','')     #调用实参

 

 

函数的执行流程

 

 想要约几次只需要

make()
make()
make()

 

 

 函数的返回值

 函数执行完之后可以return来返回结果

def make():
    print("")
    print("")
    print("")
    return 
    print("") #这句话不会被执行

 函数中遇到return,此函数结束.不在继续执行

 

return有返回值,这个返回值返还给了函数调用者

 

def make():
    print("")
    return '美女'
age = make()
print(age)

 加上返回值后的流程

1.定义了一个函数make
2.调用函数
3.执行函数里的约你
4.执行函数里的约我
5.执行函数里的约他
6.返回给调用者一个字符串'美女一枚',这个调用者就是make()
7.将返回的字符串通过一个等号赋值给白变量girl
8.打印变量girl的值

 可以返回多个值

 

def make():
    print("")
    return '美女','丑男'
age = make()
print(age)

总结:

1.遇到return,此函数结束,函数后面的东西将不会在执行

  2.return 返回值

    关于返回值:

      如果return什么都不写或者干脆就没写return,返回的结果就是None

      如果return后面写了一哥值,则调用者可以接受一个结果

      如果return后面写了多个结果,则调用者可以接受一个tuple,调用者可以直接使用解构获取多个变量

函数的参数

参数,也就是函数括号里的内容 函数在调用的时候指定一个具体的变量的值 就是参数.写法如下:

def 函数名(参数)
    函数体

 

参数

 1.形参

    写在函数声明的位置的变量叫形参,形式上的一个完整.表示这个函数需要xxx

 2.实参

    在函数调用的时候给函数传递的值.加实参,实际执行的时候给函数传递的信息.表示给函数xxx

 3.传参

    给函数传递信息的时候将实际参数交给形式参数的过程被称为传参.

 


# 参数的顺序: 位置参数 > 默认参数(关键字参数),在默认参数前边写位置参数
# 传参: 从实参到形参的过程
# 函数的参数:
# 形参: 定义的时候
# 位置参数
# 默认参数
# 混合参数
# 实参: 调用的时候
# 位置参数
# 关键字参数
# 混合参数
 

参数分类

1:位置参数

def make(chat,adder,age):
    print("拿出手机")
    print("打开"+chat)
    print("这个"+adder+"附近漂亮的"+str(age)+"岁妹妹")
    print("约不")
make("QQ","北京",18)
答:
拿出手机
打开QQ
这个北京附近漂亮的18岁妹妹
约不

 

例子:

def f(a,b):
    if a>b:
        return '大于'
    else:
        return  '小于'
print(f(2,3))
答:
小于

 

三元运算符

def f(a,b):
    c = a if a > b else b #当a>b就把a赋值给c,否则就把b赋值给c
    return c
msg = f(2,3)
print(msg)

 

关键字参数:

位置参数好不好呢?  如果是少量的参数还算OK, 没有问题. 但是如果函数在定义的时候参数非常多怎么办? 程序员必须记住, 我有哪些参数, 而且还有记住每个参数的位置, 否则函数就不能正常调用了. 那则么办呢? python提出了一种叫做关键字参数. 我们不需要记住每个参数的位置. 只要记住每个参数的名字就可以了 

def make(chat, address, age):
    print("拿出手机")
    print("打开"+chat)
    print("找个"+address+"附近漂亮的"+str(age)+"岁妹子")
    print("约不约")
 
make(chat="微信", age=18, address="北京")       # 关键字参数.
结果:
拿出手机
打开微信
找个北京附近漂亮的18岁妹子
约不约

 

混合参数:

可以把上面两种参数混合着使用. 也就是说在调用函数的时候即可以给出位置参数, 也可以指定关键字参数. 

# 混合参数 <br>make("微信", age=18, address="上海")# 正确.第一个位置赋值给chat, 后面的参数开始指定关键字.
make(age="18", "微信", address="广州")    # 错误, 最开始使用了关键字参数, 那么后面的 微信的位置就串了, 容易出现混乱

注意: 在使用混合参数的时候, 关键字参数必须在位置参数后面

综上: 在实参的⾓角度来看. 分为三种:

  1. 位置参数

  2. 关键字参数

  3. 混合参数,  位置参数必须在关键字参数前面

位置参数:

  位置参数,按照位置来赋值,到目前为止,我们编写的函数都是这种

def make(chat, address, age):   
    print("拿出手机")   
    print("打开"+chat)   
    print("找个"+address+"附近漂亮的"+str(age)+"岁妹子")   
    print("约不约")

默认值参数:

  在函数声明的时候, 就可以给出函数参数的默认值. 在调用的时候可以 给出具体的值, 也可以不给值, 使⽤用默认值. 比如, 我们录入咱们班学生的基本信息. 通过调查发现. 我们班大部分学生都是男生. 这个时 候就可以给出⼀一个sex='男'的默认值. 

def stu_info(name, age, sex=''):   
    print("录入学生信息")
    print(name, age, sex)   
    print("录入完毕")
 
stu_info("张强", 18)

注意:必须先声明在位置参数,才能声明关键字参数

 综上:在形参的角度来看

1. 位置参数

2. 默认值参数(大多数传进来的参数都是一样的, 一般用默认参数)

在实参的角度来看

1.位置参数 就是按照顺序传递

2.默认值参数(在填写参数的时候需要指定传递到形参中那个变量)

函数名的使用及第一类对象

函数名的运用

函数名是一个变量,但它是一个特殊的变量,与括号配合可以执行函数的变量

1.函数名的内存地址

def func():   
    print("呵呵")
print(func)
结果: <function func at 0x1101e4ea0>

2. 函数名可以赋值给其他变量

def func():   
    print("呵呵")
    print(func)
a = func    # 把函数当成一个变量赋值给另一个变量
a()     # 函数调用 func()

3. 函数名可以当做容器类的元素

def func1():   
    print("呵呵")
def func2():   
    print("呵呵")
def func3():   
    print("呵呵")
def func4():  
     print("呵呵")
lst = [func1, func2, func3]
for i in lst:  
     i()

 

4. 函数名可以当做函数的参数

def fun():
    print("吃了吗")
def fun2(fn):
    print("我是fun2")
    fn()    #执行过来传递来的fn
    print('我是func2')
fun2(fun)   #把函数fun当成参数传递给了fun2的参数fn

 

5. 函数名可以作为函数的返回值

def fun_c1():
    print("这里是函数1")
    def fun_c2():
        print("这里是函数2")
    print("这里是函数1")
    return fun_c2
fn = fun_c1()
# 执行函数1,函数1返回的是函数2,这时fn指向的就是上面的函数2
fn()    #执行上面返回的函数

 

 

 

 

 

 

 

 

 

 

 

posted on 2019-01-08 13:46  &#128051;️南栀倾寒&#128051;️  阅读(145)  评论(0编辑  收藏  举报

导航