从零开始学Python(六):函数
2022-03-18 18:39经验技巧
01-作业
# 1 return代表了函数的结束(return下的代码不会执行)
# 2 谁调用函数 谁接受函数的返回值
# def func(a, b):
# c = a + b
# return c
# print("123")
#
#
# num = func(10, 20)
# print(num*10)
# 列表 元组 集合 字典
a = [1, 2, 3]
b = (1, 2, 3)
d = {"name": 1, "age": 2}
print(a[0])
print(b[0])
print(d["name"])
02-函数说明文档
def func():
"""
我是一个函数
sdfsdf
sdfsdfs
sdfsdf
"""
print("xxx")
# help(func)
help(print)
03-函数嵌套
def func01():
func02()
print("func01")
def func02():
print("func02")
def func03():
func01()
print("func03")
def func04():
func03()
print("func04")
func04()
04-练习
# 1 通过函数 完成打印星星
# func01 可以打印一行星星
def func01():
print("*" * 30)
# func02 必须使用func01 同时打印5行星星
def func02():
for i in range(5):
func01()
# func02()
# 2 求3个数的和
# func03 可以求任意3个数字的和
def func03(a, b, c):
# my_sum = a + b + c
# return my_sum
return a + b + c
# func04 通过使用func03 获取3个数的平局值
def func04(a, b, c):
# ret = func03(a, b, c)
# my_avg = ret / 3
# print(my_avg)
print(func03(a, b, c)/3)
func04(30, 30, 30)
05-局部变量
# 局部变量: 函数内部定义的变量叫做局部变量
# 1 局部变量在哪个函数中定义 他就只能在哪个函数中使用(不能在函数外部直接使用)
# def func():
# num = 10
# print(num)
#
# def func01():
# print(num)
#
# func()
# print(num)
# 函数之间 的局部变量不互相影响可以是同名的
def func01():
num = 10
print(num)
def func02():
num = 20
print(num)
06-全局变量
# 全局变量: 定义在函数外部的变量就是全局变量
# 作用范围: 在函数内部使用 在函数外部使用
# num = 100
#
# def func():
# print(num)
#
# def func01():
# print(num)
#
# func()
# func01()
# print(num)
num = 100
def func():
# 在函数内部 如果有局部变量和全局变量的 就近原则
num = 30
print(num)
func()
print(num)
07-global
num = 100
def func():
# 在函数内部 想要修改全局变量的时候 需要声明这个变量是全局变量
global num
num = 30
print("函数内部:", num)
# func()
print("函数外部:", num)
08-练习
# 1. 定义全局变量
glo_num = 0
def test1():
global glo_num # 修改全局变量
glo_num = 100
def test2():
# 调用test1函数中修改后的全局变量
print(glo_num)
# 2. 调用test1函数,执行函数内部代码:声明和修改全局变量
test1()
# 3. 调用test2函数,执行函数内部代码:打印
test2() # 100
# def test1():
# return 50
#
#
# def test2(num):
# print(num)
#
#
# # 1. 保存函数test1的返回值
# result = test1()
#
# # 2.将函数返回值所在变量作为参数传递到test2函数
# test2(result) # 50
09-返回多个返回值
# 当我们用函数返回多个返回值的时候
# 返回值会以元组的形式 被返回出去
def func():
a = 100
b = 200
return a, b
ret = func()
print(ret)
10-交换数值
a = 10
b = 20
# 第一种方法
c = a
a = b
b = c
# 求和的方法
# a = 30
a = a + b
# b = 10
b = a - b
a = a - b
# python
a, b = b, a
11-位置参数和关键字参数
# 位置参数: 按照参数的先后顺序来确定
# def func(name, age, sex):
# print(f"我叫{name},我今年{age},我是{sex}的")
#
#
# func("老王", 18, "男")
# 关键字参数
def func(name, age, sex):
print(f"我叫{name},我今年{age},我是{sex}的")
func("老王", 18, "男")
func("老王", age=18, sex="男")
func(name="老王", sex="男", age=18)
# 不可以这样写
# 注意:
# 关键字参数, 非关键字参数必须写到关键字参数前面
func(age=18, "老王", sex="男")
12-缺省参数
# 缺省参数: 可以去设置默认参数的值 这样就不会出现由于少传递参数而报错的现象了
def func(name, age, sex="未知"):
print(f"我叫{name},我今年{age},我是{sex}的")
func("老王", 18)
def func(name="未知", age="未知", sex="未知"):
print(f"我叫{name},我今年{age},我是{sex}的")
func(age=18)
13-不定长参数
# 不定长参数:
# *args: 存储所有的多余出来的不是以key=value形式出现的参数 并且以元组的形式存储这些参数
# **kwargs: 存储所有的多余出来的以key=value形式出现的参数 并且以字典的形式存储这些参数
def func(name, age, q,*args, **kwargs):
print(name)
print(age)
print(args)
print(kwargs)
func("1", "2",3, 4, 5, sex="女")
14-拆包
# num = (1, 2)
# a, b = num
# print(a)
# print(b)
#
# a, b = (3, 4)
# print(a)
# print(b)
#
# a, b = b, a
def func():
return 100, 200
a, b = func()
print(a)
print(b)
15-引用
# a = 10
# b = 10
# c = 10
#
# print(id(a))
# print(id(b))
# print(id(c))
def func(data):
print("函数内部", id(data))
num = 10
print("函数外:", id(num))
func(num)
很赞哦! ()