Python.三.1.函数

1.函数的基本定义:

def 函数名(传入参数) :

        函数体

        return 返回值

      1.参数不需要可以忽略

      2.返回值不需要可以省略

      3.函数要先定义后使用

def fun():   # 传入参数不需要可以忽略
    print("hello world")
    # return 返回值不需要可以忽略

fun()

Python.三.1.函数_第1张图片

2.有传入参数的函数

   1.传入参数之间用逗号隔开,不限制个数

    2.区分好什么是传入参数(形式参数),什么是实际参数

1.两数相加

def add(x,y):   # x,y为传入参数
 print(f"{x}+{y}={x+y}")
    # return 返回值不需要可以忽略

add(1,2)   #1和2是实际参数

Python.三.1.函数_第2张图片

2.体温判断正常

def checks(x):   # x为传入参数
    if x<=37.5:
        print(f"你的体温为{x},正常")
    else:
        print(f"你的体温为{x},不正常")
    # return 返回值不需要可以忽略
print("请输入你的体温")
y=float (input())
checks(y)   # y是实际参数

Python.三.1.函数_第3张图片

3.有返回值的函数

1.基本模式

函数有返回值,执行完这个函数会返回一个值,需要用变量来接收

return结果后的语句不执行

def add(x,y):   # x,y为传入参数
    print(f"{x}+{y}={x+y}")
    return x+y

result=add(1,2)   #1和2是实际参数
print(result)

Python.三.1.函数_第4张图片

2.若无return语句,也有返回值,返回值为None

def add(x,y):   # x,y为传入参数
 print(f"{x}+{y}={x+y}")
    # return 返回值不需要可以忽略
z=add(1,2)   #1和2是实际参数
print(z)
print(type(z))

Python.三.1.函数_第5张图片

4.None在if语句中相当于False

5.None可以用于定义暂无值的变量

a=None

6.函数的嵌套

在一个函数里面调用了另一个函数

def fun1():
    print("hello")
def fun2():
    fun1()
    print("world")
fun2()

Python.三.1.函数_第6张图片

7.全局变量和局部变量

局部变量

局部变量是在函数体内定义的变量,只在函数体内有效,当函数执行完了就销毁

Python.三.1.函数_第7张图片

全局变量

在函数外定义,在函数内外都可以使用的变量

x=2
def fun1():
    print(x)
def fun2():
    print(x)
fun1()
fun2()

Python.三.1.函数_第8张图片

两者对比

定义了全局变量x=1,在fun1打印x内容为1

在fun2里,改变x的值后打印,为2

但在函数外打印x还是1,为什么呢?

因为在fun1和fun2的x是局部变量,只在函数体内部有用

x=1
def fun1():
    print(x)
def fun2():
    x=2
    print(x)
fun1()
fun2()
print(x)

Python.三.1.函数_第9张图片

那如果我想在函数内部改变全局变量的值怎么办?

用global关键字,在函数体内 global x

x=1
def fun1():
    print(x)
def fun2():
    global x   #声明它是全局变量
    x=2
    print(x)
fun1()
fun2()
print(x)

Python.三.1.函数_第10张图片

8.多个返回值

return 1,2,3

返回几个值,就用几个变量接受

返回值可以是不同类型

def fun1():
    return 1,2
a,b=fun1()
print(a,b)

Python.三.1.函数_第11张图片

9.位置参数

根据函数定义的参数位置来传递参数

传递的参数和定义的参数顺序和个数必须一致

def fun(name,age,gender):
    print(f"名字是{name}年龄为{age}性别是{gender}")

fun('jack',11,'male')
#调用函数的时候一一对应,顺序不变,数量也不变

Python.三.1.函数_第12张图片

10.关键字参数

键=值的形式传递参数

可以不按照顺序

可以与位置参数一起使用,但是位置参数必须在前面,匹配参数顺序

def fun(name,age,gender):
    print(f"名字是{name}年龄为{age}性别是{gender}")

fun(name='jack',gender='male',age=11)

Python.三.1.函数_第13张图片

def fun(name,age,gender):
    print(f"名字是{name}年龄为{age}性别是{gender}")

fun('jack',gender='male',age=11)

Python.三.1.函数_第14张图片

def fun(name,age,gender):
    print(f"名字是{name}年龄为{age}性别是{gender}")

fun(name='jack',age=11,'male')

Python.三.1.函数_第15张图片

11.缺省参数(默认参数)

为参数提供默认值,调用函数可以不传这个参数的值,所有位置参数必须出现在默认参数之前

默认参数统一在最后

def fun(name,age,gender='male'):
    print(f"名字是{name}年龄为{age}性别是{gender}")

fun('jack',11)

Python.三.1.函数_第16张图片

12.不定长参数(可变参数)

用于不确定调用时参数的个数

传入的参数被args收集,合并成一个元组

1.位置不定长

函数(*args)

变量没有特殊的格式要求,直接传进来就行

def fun(*args):
    print(f"{args} ")
    print(type(args))
fun('jack',11,[2,3,4])

Python.三.1.函数_第17张图片

2.关键字不定长

函数(**kwargs)

有格式要求,参数必须是   键=值   的格式,然后组成字典

def fun(**kwargs):
    print(f"{kwargs} ")
    print(type(kwargs))
fun(a=1,b='b',c=[7,8,9])

Python.三.1.函数_第18张图片

13.函数作为参数传递

def fun1(fun):
    x=fun(1,2)
    print(x)
def fun2(x,y):
    return x+y
fun1(fun2)

Python.三.1.函数_第19张图片14.lambda匿名函数

lambd 传入参数 :函数体

函数体只能写一行,只能使用一次

def fun1(fun):
    x=fun(1,2)
    print(x)

fun1(lambda x,y:x*y)

Python.三.1.函数_第20张图片

你可能感兴趣的:(python,python,开发语言)