25_Python基础到实战一飞冲天(二)-python基础(二十五)–函数返回值和参数
一、全局变量-06-全局变量定义的位置及代码结构
1、python全局变量定义的位置
- 为了保证所有的函数都能够正确使用到全局变量,应该 将全局变量定义在其他函数的上方。
2、python全局变量定义的位置 示例 代码(dzs_07_全局变量的位置.py)
# dzs_07_全局变量的位置.py
# 注意:在开发时,应该把模块中的所有全局变量定义在所有函数上方
# 这样就可以保证所有的函数都能够正常访问到每一个全局变量了。
num = 10
# 再定义一个全局变量
title = "全局变量测试"
# 再定义一个全局变量
name = "张三丰"
def demo():
print("%d" % num)
print("%s" % title)
print("%s" % name)
# # 再定义一个全局变量
# title = "全局变量测试"
demo()
# # 再定义一个全局变量
# name = "张三丰"
3、注意
- 由于全局变量 c,是在调用函数之后,才定义的,在执行函数时,变量还没有定义,所以程序会报错!
4、代码结构示意图如下
5、示例:
二、全局变量-07-全局变量命名的建议
1、全局变量命名的建议
- 为了避免局部变量和全局变量出现混淆,在定义全局变量时,有些公司会有一些开发要求,例如:* 全局变量名前应该增加
g_
或者gl_
的前缀。
提示:具体的要求格式,各公司要求可能会有些差异。
2、pycharm 中统一修改变量名方法
1)选中变量 —》【Refactor】—》【Rename…】。
2)快捷键:Shift + F6
3、python全局变量命名建议 示例 代码(dzs_07_全局变量命名.py)
# dzs_07_全局变量命名.py
# 注意:在开发时,应该把模块中的所有全局变量定义在所有函数上方
# 这样就可以保证所有的函数都能够正常访问到每一个全局变量了。
num = 10
# 再定义一个全局变量
title = "全局变量测试"
# 再定义一个全局变量
name = "张三丰"
def demo():
# 如果局部变量的名字和全局变量相同,pycharm就会在局部变量下方显示灰色虚线
num = 99
print("%d" % num)
print("%s" % title)
print("%s" % name)
demo()
4、示例:
三、函数参数和返回值的作用
1、python函数进阶:目标
- 函数参数和返回值的作用
- 函数的返回值 进阶
- 函数的参数 进阶
- 递归函数
2、python函数参数和返回值的作用
函数根据 有没有参数 以及 有没有返回值,可以 相互组合,一共有 4 种 组合形式:
1)无参数,无返回值
2)无参数,有返回值
3)有参数,无返回值
4)有参数,有返回值
3、python定义函数时,是否接收参数,或者是否返回结果,是根据 实际的功能需求 来决定的!
1)如果函数 内部处理的数据不确定,就可以将外界的数据以参数传递到函数内部。
2)如果希望一个函数 执行完成后,向外界汇报执行结果,就可以增加函数的返回值。
4、python函数参数和返回值示意图
四、函数的返回值-01-利用元组返回多个值
1、python函数的返回值 进阶
1)在程序开发中,有时候,会希望 一个函数执行结束后,告诉调用者一个结果,以便调用者针对具体的结果做后续的处理。
2)返回值 是函数 完成工作后,最后 给调用者的 一个结果。
3)在函数中使用 return
关键字可以返回结果。
4)调用函数一方,可以 使用变量 来 接收 函数的返回结果。
问题:一个函数执行后能否返回多个结果?
2、python函数多个返回值 示例 —— 温度和湿度测量 案例 代码
1)假设要开发一个函数能够同时返回当前的温度和湿度
先完成返回温度的功能如下:
def measure():
"""返回当前的温度"""
print("开始测量...")
temp = 39
print("测量结束...")
return temp
result = measure()
print(result)
2)在利用 元组 在返回温度的同时,也能够返回 湿度。* 改造如下:
def measure():
"""返回当前的温度"""
print("开始测量...")
temp = 39
wetness = 10
print("测量结束...")
return (temp, wetness)
提示:如果一个函数返回的是元组,括号可以省略
3、示例:
# dzs_08_函数多个返回值.py
def measure():
"""返回温度和湿度"""
print("开始测量...")
temp = 39
wetness = 50
print("测量结束...")
# 元组可以包含多个数据,因此可以使用元组可以让函数一次返回多个值
# return (temp, wetness)
# 如果一个函数返回的是元组,括号可以省略
return temp,wetness
result = measure()
print(result)
五、函数的返回值-02-接收返回元组函数的方式
1、技巧
1) 在 Python
中,可以 将一个元组 使用 赋值语句 同时赋值给 多个变量。
2)注意:变量的数量需要和元组中的元素数量保持一致。
result = temp, wetness = measure()
2、python函数多个返回值 示例改造 —— 温度和湿度测量 案例 代码
# dzs_08_函数多个返回值.py
def measure():
"""返回温度和湿度"""
print("开始测量...")
temp = 39
wetness = 50
print("测量结束...")
# 元组可以包含多个数据,因此可以使用元组可以让函数一次返回多个值
# return (temp, wetness)
# 如果一个函数返回的是元组,括号可以省略
return temp,wetness
result = measure()
print(result)
# 需要单独处理温度和湿度--不方便
print(result[0])
print(result[1])
print("=" * 20)
# 如果函数返回的类型是元组,同时希望单独处理元组中的元素
# 1)可以使用多个变量,一次接收函数返回结果,处理元组中的各个元素。
# 2)注意:变量的数量需要和元组中的元素数量保持一致。
gl_temp, gl_wetness = measure()
print(gl_temp)
print(gl_wetness)
3、示例
六、函数的返回值-03-交换两个变量的值
1、面试题 —— 交换两个数字
题目要求
1)有两个整数变量 a = 6
, b = 100
。
2)不使用其他变量,交换两个变量的值。
2、解法 1 —— 使用其他变量
# 解法 1 - 使用临时变量
c = b
b = a
a = c
3、解法 2 —— 不使用临时变量
# 解法 2 - 不使用临时变量
a = a + b
b = a - b
a = a - b
4、解法 3 —— Python 专有,利用元组
a, b = b, a
5、交换两个数字 示例 代码(dzs_09_交换两个数字(面试题).py)
# dzs_09_交换两个数字(面试题).py
a = 6
b = 100
print("未交换时 a = %d b = %d " %(a, b))
print("*" * 50)
# 解法 1 - 使用临时变量
c = b
b = a
a = c
print("方法1:使用临时变量,交换后 a = %d b = %d " %(a, b))
print("*" * 50)
a2 = 6
b2 = 100
print("未交换时 a2 = %d b2 = %d " %(a2, b2))
print("*" * 50)
# 解法 2 - 不使用临时变量
a2 = a2 + b2
b2 = a2 - b2
a2 = a2 - b2
print("方法2:不使用临时变量,交换后 a2 = %d b2 = %d " %(a2, b2))
print("*" * 50)
a3 = 6
b3 = 100
print("未交换时 a3 = %d b3 = %d " %(a3, b3))
print("*" * 50)
# 解法 3 - Python专有,利用元组
# a3, b3 = (b3, a3)
a3,b3 = b3,a3
print("方法3:Python专有,利用元组,交换后 a3 = %d b3 = %d " %(a3, b3))
print("*" * 50)
6、示例:
七、函数的参数-01-在函数内部针对参数赋值不会影响外部实参
1、函数的参数 进阶:不可变和可变的参数
问题 1:在函数内部,针对参数使用 赋值语句,会不会影响调用函数时传递的 实参变量? —— 不会!
- 无论传递的参数是 可变 还是 不可变
- 只要 针对参数 使用 赋值语句,会在 函数内部 修改 局部变量的引用,不会影响到 外部变量的引用。
2、函数不可变和可变的参数 示例 代码(dzs_10_函数不可变和可变的参数.py)
# dzs_10_函数不可变和可变的参数.py
def demo(num, num_list):
print("函数内部的代码")
# 在函数内部,针对参数使用赋值语句,不会修改到外部的实参变量
num = 200
num_list = [1, 2, 3]
print(num)
print(num_list)
print("函数代码执行完成")
gl_num = 99
gl_list = [4, 5, 6]
demo(gl_num, gl_list)
print(gl_num)
print(gl_list)
3、示例:
八、函数的参数-02-在函数内部使用方法修改可变参数会影响外部实参
1、问题 2:如果传递的参数是 可变类型,在函数内部,使用 方法 修改了数据的内容,同样会影响到外部的数据。
2、函数内部通过方法修改可变参数 示例 代码(dzs_11_函数内部通过方法修改可变参数.py)
# dzs_11_函数内部通过方法修改可变参数.py
def mutable(num_list):
print("函数内部代码开始执行")
# num_list = [1, 2, 3]
num_list.extend([1, 2, 3])
num_list.append(9)
print(num_list)
print("函数执行完成")
gl_list = [6, 7, 8]
mutable(gl_list)
print(gl_list)
3、示例:
九、函数的参数-04-列表使用+=本质上是调用extend方法
1、python列表使用 += 本质上是调用extend方法。
- 在
python
中,列表变量调用+=
本质上是在执行列表变量的extend
方法,不会修改变量的引用。
2、面试题 —— +=
(dzs_12_加等于(面试题).py)示例 代码
# dzs_12_加等于(面试题).py
def demo(num, num_list):
print("函数内部代码")
# num = num + num
num += num
# 列表变量使用 += 不会做相加再赋值的操作,是在调用列表的 extend 方法
# num_list = num_list + num_list
# num_list.extend(num_list) #由于是调用方法,所以不会修改变量的引用
# 函数执行结束后,外部数据同样会发生变化
num_list += num_list
print(num)
print(num_list)
print("函数代码完成")
gl_num = 9
gl_list = [1, 2, 3]
demo(gl_num, gl_list)
print(gl_num)
print(gl_list)
3、示例:
十、缺省参数-01-回顾列表的排序方法明确缺省参数的概念及作用
1、python函数的 缺省参数
1)定义函数时,可以给 某个参数 指定一个默认值,具有默认值的参数就叫做 缺省参数。
2)调用函数时,如果没有传入 缺省参数 的值,则在函数内部使用定义函数时指定的 参数默认值。
3)函数的缺省参数,将常见的值设置为参数的缺省值,从而 简化函数的调用。
4)例如:对列表排序的方法。
2、函数的缺省参数 示例 代码(dzs_13_函数的缺省参数.py)
# dzs_13_函数的缺省参数.py
gl_num_list = [6, 3, 9]
# 默认就是升序排序,因为这种应用需求更多
gl_num_list.sort()
print(gl_num_list)
# 只有当需要降序排序时,才需要传递 `reverse` 参数
gl_num_list.sort(reverse=True)
print(gl_num_list)
3、示例:
上一节关联链接请点击:
24_ Python基础到实战一飞冲天(二)-python基础(二十四)–局部全局变量
标签:25,gl,函数,Python,list,python,num,print,全局变量 From: https://blog.csdn.net/qfyh_djh/article/details/144092565