1函数基础

def sel_func():print('显示余额')print('存款')print('取款')print('恭喜您登录成功')
sel_func()
print('您的余额是9.99')
sel_func()
print('取了0.99元')
sel_func()
def add_num(a, b):return a + bresult = add_num(1, 2)
print(result)
# 函数体内 return下方的函数不会执行
# 函数的说明文档
# help()  查看函数的说明文档 help(help)
# 说明文档只能写在第一行
def sum_num(a, b):"""求和函数"""return a + bhelp(sum_num)# 高级使用  在注释内敲回车def sum_num1(a, b):"""求和函数1:param a:参数1:param b:参数2:return: 返回值"""return a + bhelp(sum_num1)
# 函数嵌套调用
def testB():print('这里是testB')def testA():print('这里是testA')testB()testA()
# 函数嵌套应用
# 1.1打印一条横线
def print_line():print('-' * 20)print_line()# 1.2打印多条横线
def print_lines(num):i = 0while i < num:print_line()i += 1print_lines(3)
print()# 2.1求三个数之和
def sum_num(a, b, c):return a + b + cresult = sum_num(1, 2, 3)
print(result)# 2.2 求三个数的平均值
def average_num(a, b, c):sumResult = sum_num(a, b, c)return sumResult / 3result1 = average_num(1, 2, 3)
print(result)

2函数进阶

2.1函数的作用域

指的是变量生效的范围,主要分为两类:局部变量和全局变量

2.1.1 局部变量

局部变量 定义在函数体内部的变量,只在函数体内部生效
局部变量的作用:在函数体内部,临时保存数据,即当函数调用完成后,则销毁局部变量。
#定义在函数内部的变量,在函数外部访问则立即报错

2.1.2全局变量

指的是在函数体内、外都能生效的变量

# 修改全局变量
a = 100def testA():print(a)def testB():a = 200print(a)testA()  # 100
testB()  # 200
print(f'全局变量{a}')  # 100# 在函数体内部修改全局变量
def testB1():global aa = 200testB1()
print(f'全局变量a={a}')  # 200

2.2多函数程序执行流程

glo_num = 0def test1():global glo_numglo_num = 100def test2():print(glo_num)print(glo_num)  # 0  还没有调用函数1
test1()
test2()  # 100  先调用了函数1
print(glo_num)  # 100

2.3返回值作为参数传递

def test1():return 50def test2(num):print(num)result = test1()
test2(result)  # test2(test1())

2.4函数的返回值

# 有多个返回值的写法def return_num1():return 1return 2print(return_num1())  # 1# 正确写法def return_num2():# return 1, 2  # 返回的是元组 (1, 2)# return 后面可以直接书写 元组 列表 字典 返回多个值# return [100, 200]  # [100, 200]return {'name': 'whh', 'age': 2}print(return_num2())

2.5函数的参数

# 1位置参数
# 传递和定义参数的顺序和个数必须一致
def user_info(name, age, gender):print(f'名字{name},年龄{age},性别是{gender}')user_info('tom', 20, 'man')
# 2关键字参数
# 函数调用通过“键=值”形式加以指定。消除了参数的顺序的要求
# 函数调用是,如果有位置参数时,位置参数必须在关键字参数的前面,
# 但关键字之间不存在先后顺序
def user_info(name, age, gender):print(f'名字{name},年龄{age},性别是{gender}')user_info('tom', gender='man', age=20)
# 3缺省参数
# 缺省参数也叫做默认参数,用于定义函数,为函数提供默认值,
# 调用函数时可不传该默认参数的值
# 注意:所有位置参数必须出现在默认参数前,包括函数的定义和调用
# 函数调用时,如果为缺省函数传值则修改默认参数值;否则使用这个默认值def user_info(name, age, gender='男'):print(f'名字{name},年龄{age},性别是{gender}')user_info('tom', 20)
user_info('rr', 23, '女')

不定长此参数也叫做可变参数
用于不确定嗲用的时候会传递多少个参数(不穿参也可以)。
可用(packing)位置参数,或者包裹关键字参数,来进行参数传递

# 4.1包裹位置传递
# 传进的所有参数都会被args变量收集,它会根据传进参数的位置合并为一个元组
# args是元组类型,这就是包裹位置传递
def user_info(*args):print(args)user_info('Tom')  # ('Tom',)
user_info('Tom', 22)  #  ('Tom', 22)
# 4.2 包裹关键字传递def user_info(**kwargs):print(kwargs)user_info()  # {}
user_info(name='Tm', age=18, id=110)
# {'name': 'Tm', 'age': 18, 'id': 110}
# 无论是包裹位置传递还是包裹关键字传递,都是一个组包的过程

2.6拆包和交换变量值

2.6.1拆包

# 拆包:元组
def return_num():return 100, 200num1, num2 = return_num()
print(num1)
print(num2)# 拆包:字典
dict1 = {'name': 'Tom', 'age': 18}
a, b = dict1print(a)
print(dict1[a])
print(b)
print(dict1[b])

2.6.2交换变量值

# 需要交换a = 10和b = 20的值
# 1 借助第三个变量
a, b, c = 10, 20, 0
c = a
a = b
b = c
print(f'a={a},b={b}')  # a=20,b=10# 2
a, b = 1, 2
a, b = b, a
print(f'a={a},b={b}')  # a=2,b=1

2.7引用

在python中,值都是靠引用来传递的
可以使用id()来判断两个变量是否为同一个值的引用。
可以将id值理解为那块内存的地址标识

2.7.1引用之不可变类型

#  int
a = 1
b = a
print(b)  # 1
print(id(a))  # 140713135498064
print(id(b))  # 140713135498064a = 2
print(b)  # 1,说明int为不可变类型
print(id(a))  # 140713135498096
print(id(b))  # 140713135498064

2.7.2引用之可变类型

# 列表
aa = [10, 20]
bb = aaprint(id(aa))  # 1471838577288
print(id(bb))  # 1471838577288aa.append(30)
print(bb)  # [10, 20, 30]  列表为可变类型print(id(aa))  # 1471838577288
print(id(bb))  # 1471838577288

2.7.3引用当作实参

def test1(a):print(a)print(id(a))a += aprint(a)print(id(a))# int: 计算前后id值不相同
b = 100
test1(b)
# 列表:计算前后id值相同
c = [11, 22]
test1(c)

2.8可变和不可变类型

数据能够直接进行修改的就是可变类型

2.8.1可变类型

列表、字典和集合

2.8.2不可变类型

整型、浮点型、字符串、元组

Python_基础_6相关推荐

  1. Python_基础知识储备

    目录 目录 前言 初识Python 解析型与编译型 OOP与POP 相关概念1 Python的解释器 Python程序设计的思想 Python的编程风格 最后 前言 前面的博文从记录了如何Setup ...

  2. python语法基础知识-python_基础知识_安装和基础语法

    一.python安装 先在官网,找到所属系统的安装环境.建议选择3.x 建议选择安装稳定版本. 选择自行配置安装环境. 直接选择Next,进行下一步. 选择安装目录. 安装页面,等待安装. 安装完成, ...

  3. Python_基础知识02

    1. 主要内容 回顾复习 程序结构--循环结构[while] break关键字 continue关键字 else关键字 案例操作 2. 课堂内容 1) 回顾复习 编程基础结构:程序结构 l  顺序结构 ...

  4. Python_基础语法_字符串基本操作__声明方式_占位符_切片_转义字符_加密解密(6)

    目录: 一.字符串介绍 1.字符的渲染 2.字符的编码 3.不可变类型 二.字符串的基本操作 1.字符串声明 2.字符串占位符号 3.字符串索引切片(包含练习) 4.字符串转义 三.字符串的高级操作 ...

  5. Python_基础_5

    1公共操作 str1 = 'aa' str2 = 'bb'list1 = [1, 2] list2 = [10, 20]t1 = (1, 2) t2 = (10, 20)dict1 = {'name' ...

  6. Python_基础_4

    1元组 # 一个元组可以存储多个数据,但是元组内的数据不可以修改 # 多个数据元组 t1 = (10, 20, 30) # 单个数据元组 t2 = (10,)# 查找 tuple1 = ('aa', ...

  7. Python_基础_3

    1字符串 1.认识字符串 2.下标 3.切片 4.常用操作 1.1 # 字符串 a = 'hello world' print(a) # hello worlda = 'hello ' \'world ...

  8. Python_基础_2

    1条件语句 ''' 语法 if条件:条件成立执行的代码1... 有缩进得到属于if语句条件块 '''age = int(input('请输入您的年龄:')) #例子 if age >= 18:p ...

  9. Python_基础_1

    1.注释 注释分类:单行注释和多行注释 单行注释: 快捷键 Ctrl+/ #知识内容 多行注释: 有两种写法:六个单引号或者六个双引号 ''' 在这里插入代码片1 ''' ""&q ...

最新文章

  1. 谈谈对线程与进程的理解
  2. J2EE中一些常用的名词【简】
  3. 第一台定制商用NAS存储服务器
  4. 前端学习(1526):heroes案例 效果演示
  5. [Leetcode][第1025题][JAVA][除数博弈][数学][递推]
  6. centos php 版本升级 至5.3 wordpress3.7
  7. java quartz tomcat_Quartz Scheduler - 在Tomcat或应用程序jar中运行?
  8. E. 数好多好多猴(南阳理工oj—21新生第二场招新赛)
  9. bootstrap表单拖拽生成器插件_web前端常用插件、工具类库汇总,新手必收藏!!!...
  10. shell脚本编程学习(一)
  11. wxpython记录生词GUI程序
  12. REM布局计算,移动端,pc端有兼容性)
  13. opera价格设置(一)
  14. 震惊·X话最少的~“原理图更新到PCB时出现Unknown Pin: PinXXX 问题解决方案”
  15. matlab划分训练集验证和测试集代码_Matlab随机划分训练集和测试集
  16. 2019 中科院 信工所二室 夏令营 笔试面试经验
  17. 如何调试 chrome插件
  18. 输入法打出的英文间隔很大
  19. Java高级——OutOfMemoryError和StackOverflowError
  20. uniapp中使用拷贝,复制粘贴功能,uniapp,隐藏软键盘

热门文章

  1. 第三周 数据分析之概要 Pandas库入门
  2. 阅读源代码的一点小技巧
  3. 从平台到中台:Elaticsearch 在蚂蚁金服的实践经验
  4. 学了redis我能拿你做什么
  5. 由浅入深区块链技术,程序员不得不看的十篇好文
  6. Java NIO——Selector机制源码分析---转
  7. 【Python】如何学好Python
  8. EMQ服务器问题处理及分析
  9. 大火系列: Rust入门篇 mut
  10. 高并发编程-Daemon Thread的创建以及使用场景分析