def sum_num(a, b):
“”“求和函数”“”
return a + b
help(sum_num)
函数的说明文档的高级使用
def sum_num1(a, b):
“”"
求和函数sum_num1
:param a: 参数1
:param b: 参数2
:return: 返回值
“”"
return a + b
help(sum_num1)
两个函数 testA 和 testB – 在A里面嵌套调用B
B函数
def testB():
print(‘B函数开始-----’)
print(‘这是B函数’)
print(‘B函数结束-----’)
A函数
def testA():
print(‘A函数开始-----’)
嵌套调用B
testB()
print(‘A函数结束-----’)
testA()
1.思考&实现1
1. 打印一条横线
def print_line():
print(‘-’ * 20)
print_line()
2. 函数嵌套调用 实现多条横线
def print_lines(num):
i = 0
while i < num:
print_line()
i += 1
print_lines(5)
2.思考&实现2
1. 任意三个数之和
def sum_num(a, b, c):
return a + b + c
result = sum_num(1, 2, 3)
print(result)
2. 任意三个数求平均值
def average_num(a, b, c):
先求和 再除以3
sumResult = sum_num(a, b, c)
return sumResult / 3
averageResult = average_num(1, 2, 3)
print(averageResult)
1.变量作用域
变量作用域指的是变量生效的范围,主要分为两类:局部变量和全局变量。
2.局部变量
定义一个函数,声明一个变量:函数体内部访问、函数体外面访问
def testA():
a = 100
print(a) # 函数体内部访问,能访问到a变量
testA()
print(a) # 报错: a变量是函数内部的变量,函数外部无法访问 – a是一个局部变量
什么是局部变量
小总结
1.什么是全局变量
声明全局变量:函数体内外都能访问
a = 100
print(a)
def testA():
print(a)
def testB():
print(a)
testA()
testB()
2.全局变量和局部变量名字相同问题
3.修改全局变量
B函数想要a的取值是200
a = 100
print(a)
def testA():
print(a)
def testB():
a = 200 # 如果直接修改a=200,此时的a是全局a还是局部a? – 得到结论:这个a是局部变量
# 因为在全局位置(B函数调用后)打印a得到的不是200而是100
print(a)
想要修改全局变量a,值是200
global a # 声明a为全局变量
a = 200
print(a)
testA()
testB()
print(a)
“”"
总结:
-
如果在函数里面直接把变量a=200赋值,此时的a不是全局变量的修改,而是相当于在函数内部声明了一个新的局部变量
-
函数体内部修改全局变量: 先global声明a为全局变量,然后再变量重新赋值
“”"
1.使用全局变量
2.使用函数的返回值、参数
3.函数嵌套调用
1. 声明全局变量;2. 定义两个函数;3. 函数一修改全局变量;函数2访问全局变量
glo_num = 0
def test1():
global glo_num
glo_num = 100
def test2():
print(glo_num)
print(glo_num) # 0, 因为修改的函数没执行
test2() # 0 , 因为修改的函数没执行
test1()
test2() # 100,先调用了函数1
print(glo_num) # 100 , 调用了函数1
1. 定义两个函数;2. 函数一有返回值50;函数二把返回值50作为参数传入(定义函数二要有形参)
def test1():
return 50
def test2(num):
print(num)
先得到函数一的返回值,再把这个返回值传入到函数二
result = test1()
print(result)
test2(result)
在python中我们怎样返回多个值?
需求:一个函数有两个返回值1和2
一个函数如果有多个return不能都执行,只执行第一个return:无法做法一个函数多个返回值
def return_num():
return 1
return 2
result = return_num()
print(result)
一个函数多个返回值的写法
def return_num():
return 1, 2 # 返回的是元组
return后面可以直接书写 元组 列表 字典,返回多个值
return (10, 20)
return [100, 200]
return {‘name’: ‘Python’, ‘age’: 30}
result = return_num()
print(result)
1.多个return?
2.一个函数返回多个数据的方式
1.位置参数
需求:函数3个参数name,age,gender
def user_info(name, age, gender):
print(f’您的姓名是{name}, 年龄是{age}, 性别是{gender}')
user_info(‘TOM’, 20, ‘男’)
user_info(‘TOM’, 20) # 个数定义和传入不一致会报错
user_info(20, ‘TOM’, ‘男’) # 顺序也和定义必须是一致的,否则导致数据无意义
2.关键字参数
def user_info(name, age, gender):
print(f’您的姓名是{name}, 年龄是{age}, 性别是{gender}')
调用函数传参
user_info(‘ROSE’, age=20, gender=‘女’)
user_info(‘小明’, gender=‘男’, age=18) # 关键字参数之间不分先后顺序
位置参数必须写在关键字参数的前面
user_info(age=20, gender=‘男’, ‘TOM’)
3.缺省参数
def user_info(name, age, gender=‘男’):
print(f’您的姓名是{name}, 年龄是{age}, 性别是{gender}')
user_info(‘TOM’, 18) # 没有为缺省参数传值,表示使用默认值
user_info(‘TOM’, 18, gender=‘女’) # 为缺省参数传值,使用这个值,即修改了默认值
4.不定长参数
接收所有位置参数,返回一个元组
def user_info(*args):
print(args)
user_info(‘TOM’)
user_info(‘TOM’, 20)
user_info(‘TOM’, 20, ‘man’)
user_info()
收集所有关键字参数,返回一个字典
def user_info(**kwargs):
print(kwargs)
user_info()
user_info(name=‘TOM’)
user_info(name=‘TOM’, age=20)
5. 缺省参数在*args后面
1.对返回的数据直接拆包
1. 拆包元组数据
def return_num():
return 100, 200
# result = return_num()
# print(result)
num1, num2 = return_num()
print(num1)
print(num2)
2. 字典数据拆包: 变量存储的数据是key值
先准备字典,然后拆包
dict1 = {‘name’: ‘TOM’, ‘age’: 20}
dict1中有两个键值对,拆包的时候用两个变量接收数据
a, b = dict1
print(a)
print(b)
v值
print(dict1[a])
print(dict1[b])
2.交换2个变量的值
a = 10
b = 20
1. 方法一
“”"
1.1 定义中间的第三变量,为了临时存储a或b的数据
1.2 把a的数据存储到c,做保存
1.3 把b的数据赋值到a, a = 20
1.4 把c的数据赋值到b, b = 10
“”"
c = 0
c = a
a = b
b = c
print(a)
print(b)
a, b = 1, 2
print(a)
print(b)
a, b = b, a
print(a)
print(b)
可变和不可变
1. 不可变:int: 1.1 声明变量保存整型数据,把这个数据赋值到另一个变量; id()检测两个变量的id值(内存的十进制值)
a = 1
b = a
print(b)
# 发现a和b的id值相同的
print(id(a))
print(id(b))
# 修改a的数据测试id值
a = 2
print(b)
# 因为修改了a的数据,内存要开辟另外一份内存取存储2,id检测a和b的地址不同
print(id(a))
print(id(b))
2. 可变类型:列表
aa = [10, 20]
bb = aa
print(bb)
print(id(aa))
print(id(bb))
aa.append(30)
print(aa)
print(bb) # 列表是可变类型
print(id(aa))
print(id(bb))
需求:引用是否可以当做实参
“”"
- 定义函数: 有形参
1.1 访问打印形参看是否有数据
1.2 访问形参的id
1.3 改变形参的数据,查看这个形参并打印id,看id值是否相同
- 调用函数 – 把可变和不可变两种类型依次当做实参传入
“”"
def test1(a):
print(a)
print(id(a))
a += a
print(a)
print(id(a))
b = 100
test1(b)
c = [11, 22]
test1©
1.自定义函数
2.调用函数
3.作用域
定义功能界面函数
def info_print():
print(‘请选择功能--------------’)
print(‘1、添加学员’)
print(‘2、删除学员’)
print(‘3、修改学员’)
print(‘4、查询学员’)
print(‘5、显示所有学员’)
print(‘6、退出系统’)
print(‘-’ * 20)
等待存储所有学员的信息
info = []
添加学员信息的函数
def add_info():
“”“添加学员函数”“”
1. 用户输入:学号、姓名、手机号
new_id = input(‘请输入学号:’)
new_name = input(‘请输入姓名:’)
new_tel = input(‘请输入手机号:’)
2. 判断是否添加这个学员:如果学员姓名已经存在报错提示;如果姓名不存在添加数据
global info
2.1 不允许姓名重复:判断用户输入的姓名 和 列表里面字典的name对应的值 相等 提示
for i in info:
if new_name == i[‘name’]:
print(‘此用户已经存在’)
return作用:退出当前函数,后面添加信息的代码不执行
return
break
2.2 如果输入的姓名不存在,添加数据:准备空字典,字典新增数据,列表追加字典
info_dict = {}
字典新增数据
info_dict[‘id’] = new_id
info_dict[‘name’] = new_name
info_dict[‘tel’] = new_tel
print(info_dict)
列表追加字典
info.append(info_dict)
print(info)
删除学员
def del_info():
“”“删除学员”“”
1. 用户输入要删除的学员的姓名
del_name = input(‘请输入要删除的学员的姓名:’)
2. 判断学员是否存在:存在则删除;不存在提示
2.1 声明info是全局变量
global info
2.2 遍历列表
for i in info:
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Python开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注Python)
] = new_tel
print(info_dict)
列表追加字典
info.append(info_dict)
print(info)
删除学员
def del_info():
“”“删除学员”“”
1. 用户输入要删除的学员的姓名
del_name = input(‘请输入要删除的学员的姓名:’)
2. 判断学员是否存在:存在则删除;不存在提示
2.1 声明info是全局变量
global info
2.2 遍历列表
for i in info:
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
[外链图片转存中…(img-kr9D41l3-1711699522797)]
[外链图片转存中…(img-8oQfSN4K-1711699522797)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Python开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注Python)
[外链图片转存中…(img-05RQx4Nt-1711699522797)]