首页 > 编程语言 ># 25_Python基础到实战一飞冲天(二)-python基础(二十五)--函数返回值和参数

# 25_Python基础到实战一飞冲天(二)-python基础(二十五)--函数返回值和参数

时间:2024-12-01 18:00:44浏览次数:7  
标签:25 gl 函数 Python list python num print 全局变量

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

相关文章

  • 2024-2025-1 20241413 《计算机基础与程序设计》第十周学习总结
    班级链接https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP作业要求https://www.cnblogs.com/rocedu/p/9577842.html#WEEK10作业目标信息系统数据库与SQL人工智能与专家系统人工神经网络模拟与离散事件排队系统天气与地震模型图形图像教材学习内容......
  • 20222317 2024-2025-1 《网络与系统攻防技术》实验七实验报告
    1.实验内容本实践的目标理解常用网络欺诈背后的原理,以提高防范意识,并提出具体防范方法。具体实践有(1)简单应用SET工具建立冒名网站(2)ettercapDNSspoof(3)结合应用两种技术,用DNSspoof引导特定访问到冒名网站。2.实验过程2.1简单应用SET工具建立冒名网站2.1.1开启并配置Apac......
  • python毕设社区疫情防控物资调配平台ldly9.程序+论文
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景新冠疫情的爆发使得全球公共卫生体系面临前所未有的挑战,社区作为疫情防控的前沿阵地,其物资调配能力直接关系到疫情防控的成效。在疫情初期......
  • python毕设社区志愿者服务管理系统ic6n8.程序+论文
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着社会的快速发展和居民生活水平的提高,社区志愿者服务在促进社会和谐、提升居民生活质量方面发挥着越来越重要的作用。然而,传统的志愿者......
  • Python中的GIL(全局解释器锁)是什么?它如何影响多线程编程?
    Python中的GIL(全局解释器锁)是什么?它如何影响多线程编程?Python中的GIL(全局解释器锁)是什么?它如何影响多线程编程?摘要引言什么是GIL?为什么它会影响多线程?1.**什么是GIL(全局解释器锁)?**1.1**GIL的目的**1.2**GIL的工作机制**2.**GIL对多线程编程的影响**2.1**多线程不......
  • Python 潮流周刊#79:Python 的元数据困境(摘要)
    本周刊由Python猫出品,精心筛选国内外的250+信息源,为你挑选最值得分享的文章、教程、开源项目、软件工具、播客和视频、热门话题等内容。愿景:帮助所有读者精进Python技术,并增长职业和副业的收入。分享了12篇文章,12个开源项目,2则热门讨论,全文2200字。以下是本期摘要:......
  • Python基础2
    1.列表:可变类型公共功能索引切片步长修改删除delforusers=['张三','李四','王五','刘六']foriinusers:forelementini:print(element)len独有功能append("content")在列表的最后追加一个元素insert(index,"content......
  • 【Altium Designer 25.0.2下载与安装教程】
    1、安装包「AltiumDesignerv25.0.2.28.rar」链接:https://pan.quark.cn/s/babcbc39d4b1提取码:EPis2、安装教程(建议关闭杀毒软件和系统防护)1)       下载并解压下载的安装包,右击Installer.exe安装,弹窗安装对话框  2)       点击Next   3)   ......
  • Python 元类机制的工作流程及参数调用的不同
    classMymeta(type):def__new__(cls,name,bases,dct):print(f'Mymeta.__new__:cls={cls},id(cls)={id(cls)}')returnsuper().__new__(cls,name,bases,dct)def__init__(cls,name,bases,dct):print(f'Mymet......
  • Python.task3
    Python.task3数据类型数字(intfloatcomplex)bool字符串序列元组字典集合字符串不可以修改内容str.replace(str1,str2):替换得到新字符串str.split(strx):分隔str.strip(strx):移除序列:list[]list.(index):取出对应下标,负数为倒着数list.append(x):追加一个元素......