从零开始学python 09——函数

1、函数的概念

被命名,独立的,完成特定功能的代码段

2、函数的作用

①简化代码,代码的重复利用

②模块化编程

3、函数的基本原理

通过函数(内存地址),找到地址中保存的函数内部执行的代码,然后通过函数名()可以调用内存地址中的代码

4、函数的定义语法

通过def关键字进行定义

def 函数名(参数):

        函数中的代码

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


hello()
hello world

5、带有参数的函数定义

def 函数名(参数名):

        函数中的代码(使用参数)

# 在定义函数时,写入的参数,叫做形参(形式参数) 类似变量
def hello(name):
    print(f"{name}老师好")


# 使用函数时,传入的参数,叫做实参(实际参数) 类似变量值
hello("张三")

6、带有返回值的函数定义

def 函数名():

        函数中的代码

        return 返回值

def hello():
    ret = "你好"
    return ret


print(hello())
你好

7、函数嵌套

函数在执行过程中又调用了另一个函数

def func01():
    print("1")


def func02():
    print("2")
    func01()


func02()
2
1

8、全局变量和局部变量

全局变量:定义在函数外部的变量,可以在函数内部外部生效的变量

局部变量:定义在函数内部的变量,只能在函数内部生效的变量(随着函数调用结束,局部变量就会在内存中销毁)

# 定义一个全局变量
a = 100


def func01():
    # 定义一个局部变量
    b = 10
    print(f"输出全局变量a:{a}")
    print(f"输出局部变量b:{b}")


func01()
print(f"输出全局变量a:{a}")
# print(f"输出局部变量b:{b}")  # 报错,只能作用于函数内部
输出全局变量a:100
输出局部变量b:10
输出全局变量a:100

9、global关键字

声明全局变量,在函数中改变全局变量

注意点:

针对不可变类型的全局变量(字符串、整型、浮点型、元组等)可变类型的全局变量(字典,集合,列表等)可写可不写

a = 100


def func01():
    global a
    a = 10
    print(f"a的值为:{a}")


func01()
print(f"a的值为:{a}")

list1 = [1, 2, 3]


def func02():
    list1.append(4)
    print(list1)


func02()
print(list1)
a的值为:10
a的值为:10
[1, 2, 3, 4]
[1, 2, 3, 4]

10、位置参数和关键字参数

位置参数:在调用函数传入参数时,传入的实参顺序要和定义函数时形参顺序一一对应

关键字参数:在调用函数传入参数时,以“变量名=值”的方法进行传递,关键字参数不需要考虑顺序是否对应

def func01(name, age, gender):
    print(f"我叫{name},今年{age}岁,是个{gender}孩")


# 位置参数
func01("张三", 18, "男")
# 关键字参数
func01(gender="男", name="张三", age=18)
我叫张三,今年18岁,是个男孩
我叫张三,今年18岁,是个男孩

11、缺省参数

定义函数值时,可以定义一个缺省参数,此时参数就有一个默认值,可以手动修改缺省参数的值

注意点:

①调用函数时,可以不传递缺省参数,将默认值进行参数传递,也可以自行修改默认值

②定义和调用默认值参数时,将默认值参数放到位置参数后边

def func01(name, age, gender="男"):
    print(f"我叫{name},今年{age},是个{gender}孩")


func01("张三", 18)
func01("小红", 20, "女")
我叫张三,今年18,是个男孩
我叫小红,今年20,是个女孩

12、不定长参数

*args:定义函数传入形参时,接收的是一个元组类型,调用函数传入实参时通过位置参数传递

**kwargs:定义函数传入形参时,接收的是一个字典类型,调用函数传入实参时通过关键字参数传递

def func01(*args):
    print(args)
    print(f"我叫{args[0]},今年{args[1]}岁,性别{args[2]}")


func01("张三", 18, "男")


def func02(**kwargs):
    print(kwargs)
    print(f"我叫{kwargs['name']},今年{kwargs['age']},性别{kwargs['gender']}")


func02(name="张三", age=18, gender="男")
('张三', 18, '男')
我叫张三,今年18岁,性别男
{'name': '张三', 'age': 18, 'gender': '男'}
我叫张三,今年18,性别男

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值