一、定义

  函数指将一组语句的集合通过一个变量名封装起来,调用这个函数变量名,就可以执行函数。

二、特点

  • 减少重复逻辑代码的编写
  • 将程序中的逻辑可以进行扩展
  • 维护项目程序的代码更简单

三、创建

def 函数名():逻辑代码1逻辑代码2return 结果
函数名()

代码实操——求和函数

def sum(a, b):res = a + breturn res
print(sum(1, 2))
print(sum(3, 4))
  • 运行结果:
3
7

四、参数

4.1 形参

4.1.1 定义

  • 在函数定义时声明的参数,用于接收调用时传递的值
  • 形参是函数内部的变量名,描述了函数需要的输入类型和数量

4.1.2 代码实操——求积函数

def oblong_area(l, w):area = l * wreturn areaprint(oblong_area(10, 20))

lw是形参

  • 运行结果:
200

4.2 实参

4.2.1 定义

函数调用时传递给形参的实际值,可以是常量、变量、表达式或其他函数的返回值。

4.2.2 代码实操——求长方形的面积

def oblong_area(l, w):area = l * wreturn areawidth = 5
length = 10
print(oblong_area(width, length))
print(oblong_area(3 + 2, length))

widthlength3 + 2是实参

  • 运行结果:
50
50

4.3 默认参数

4.3.1 定义

在函数定义时为参数指定默认值,调用时可以省略该参数。

4.3.2 规则

默认参数必须放在普通参数之后。

4.3.3 特点

默认参数使函数调用更加灵活,可以减少重复传值。

4.3.4 代码实操——求积函数(2)

def oblong_area(w, l=10):area = l * wreturn areaprint(oblong_area(20))
print(oblong_area(20, 5))

l=10是默认参数

  • 运行结果:
200
100

4.4 关键参数

4.4.1 定义

通过参数名指定传递的值,允许不按形参顺序传参。

4.4.2 规则

关键参数必须放在位置参数(按顺序传递的参数)之后。

4.4.3 特点

关键参数提高了代码可读性,尤其适用于参数较多的函数。

4.4.4 代码实操——计算长方体的体积

def cuboid_volume(w, h, l=10):volume = l * w * hreturn volumeprint(cuboid_volume(10, h=3, l=20))
print(cuboid_volume(h=3, w=10, l=20))
print(cuboid_volume(l=20, 10, 3))

h=3l=20w=10是关键参数

  • 运行结果:
  File "D:\Desktop\Python-learning\【Python 第一弹】\EP04:【Python 第一弹】函数编程\函数编程\02_参数.py", line 37print(cuboid_volume(l=20, 10, 3))^
SyntaxError: positional argument follows keyword argument
600
600

4.5 可变参数

4.5.1 *args——接收任意数量的位置参数

  1. 定义:收集所有未匹配的位置参数,组成一个元组。
  2. 特点:通常用于处理不确定数量的额外参数。
代码实操——学生信息
def get_info(name, age, *args):print(f"姓名: {name}, 年龄: {age}, 其他信息: {args}")get_info('老王', 48, '洗脚', '按摩')
get_info('老李', 30)
  • 运行结果:
姓名: 老王, 年龄: 48, 其他信息: ('洗脚', '按摩')
姓名: 老李, 年龄: 30, 其他信息: ()

4.5.2 **kwargs——接收任意数量的关键字参数

  1. 定义:收集所有未匹配的关键字参数,组成一个字典。
  2. 特点:通常用于处理不确定数量的键值对参数。
代码实操——学生信息(2)
def get_info(name, age, **kwargs):print(f"姓名: {name}, 年龄: {age}, 爱好: {kwargs}")get_info('老王', 48, hobby1='洗脚', hobby2='按摩')
get_info('老李', 30, job='工程师', city='北京')
  • 运行结果:
姓名: 老王, 年龄: 48, 爱好: {'hobby1': '洗脚', 'hobby2': '按摩'}
姓名: 老李, 年龄: 30, 爱好: {'job': '工程师', 'city': '北京'}

4.6 代码实操——混合使用

def func(a, b, *args, c=10, **kwargs):print(f"a: {a}, b: {b}, args: {args}, c: {c}, kwargs: {kwargs}")func(1, 2, 3, 4, c=20, d=5, e=6)

规则:普通参数 → *args → 默认参数 → **kwargs

  • 运行结果:
a: 1, b: 2, args: (3, 4), c: 20, kwargs: {'d': 5, 'e': 6}

五、变量

5.1 全局变量

5.1.1 定义

在函数外部定义的变量,作用域覆盖整个程序(除函数内部的同名局部变量作用域外),在程序运行期间始终存在。

5.1.2 特点

  • 可以被程序中的任何函数、代码块访问(除非被局部变量遮蔽)
  • 函数内部操作全局变量:
    • 仅访问全局变量:无需声明,直接使用即可
    • 修改全局变量:必须用global关键字声明,否则 Python 会将其视为局部变量

5.1.3 代码实操

global_var = "全局的变量"def print_global_var():print(global_var)print_global_var()
print(global_var)
  • 运行结果:
全局的变量
全局的变量

5.2 局部变量

5.2.1 定义

在函数内部定义的变量,作用域仅限于该函数内部,函数调用时创建,函数执行结束后自动销毁。

5.2.2 特点

  • 仅在定义它的函数内部有效,外部无法直接访问
  • 如果函数内部的局部变量与全局变量同名,函数会优先使用局部变量(局部变量遮蔽全局变量)

5.2.3 代码实操

def print_local_var():local_var = '局部变量'print(local_var)print_local_var()
print(local_var)
  • 运行结果:
局部变量
Traceback (most recent call last):File "D:\Desktop\Python-learning\【Python 第一弹】\EP04:【Python 第一弹】函数编程\函数编程\03_变量.py", line 16, in <module>print(local_var)^^^^^^^^^
NameError: name 'local_var' is not defined. Did you mean: 'global_var'?

六、内置函数

Built-in Functions

6.1 数学运算类

6.1.1 abs(x)

  1. 功能:返回数字的绝对值。
  2. 示例:
print(abs(-5))       # 输出: 5
print(abs(3.14))     # 输出: 3.14
print(abs(-3+4j))    # 输出: 5.0(复数的模)

6.1.2 divmod(a, b)

  1. 功能:返回 (a // b, a % b) 的元组(商和余数)。
  2. 示例:
print(divmod(10, 3))  # 输出: (3, 1)
print(divmod(5, 2.5)) # 输出: (2.0, 0.0)

6.1.3 pow(x, y[, z])

  1. 功能:返回 x**y,若提供z则计算(x**y) % z(更高效)
  2. 示例:
print(pow(2, 3))      # 输出: 8(2³)
print(pow(2, 3, 5))   # 输出: 3(8 % 5)

6.1.4 round(number[, ndigits])

  1. 功能:对浮点数四舍五入,ndigits指定保留小数位数(默认为0)。
  2. 示例:
print(round(3.14159))     # 输出: 3
print(round(3.14159, 2))  # 输出: 3.14
print(round(2.5))         # 输出: 2(银行家舍入:取最接近的偶数)

6.2 类型转换类

6.2.1 int(x[, base])

  1. 功能:将数值或字符串转换为整数,base指定进制(默认为10)。
  2. 示例:
print(int(3.9))          # 输出: 3(直接截断小数部分)
print(int('101', 2))     # 输出: 5(二进制转十进制)
print(int('FF', 16))     # 输出: 255(十六进制转十进制)

6.2.2 float(x)

  1. 功能:将数值或字符串转换为浮点数。
  2. 示例:
print(float(5))          # 输出: 5.0
print(float('3.14'))     # 输出: 3.14

6.2.3 str(object='')

  1. 功能:将对象转换为字符串。
  2. 示例:
print(str(123))          # 输出: '123'
print(str([1, 2, 3]))    # 输出: '[1, 2, 3]'

6.2.4 bool(x)

  1. 功能:将对象转换为布尔值(遵循Python的真值测试规则)。
  2. 示例:
print(bool(0))           # 输出: False
print(bool(''))          # 输出: False
print(bool([]))          # 输出: False
print(bool(None))        # 输出: False
print(bool(42))          # 输出: True

6.2.5 list([iterable])

  1. 功能:将可迭代对象转换为列表。
  2. 示例:
print(list('abc'))       # 输出: ['a', 'b', 'c']
print(list((1, 2, 3)))   # 输出: [1, 2, 3]

6.2.6 tuple([iterable])

  1. 功能:将可迭代对象转换为元组。
  2. 示例:
print(tuple([1, 2, 3]))  # 输出: (1, 2, 3)
print(tuple('xyz'))      # 输出: ('x', 'y', 'z')

6.2.7 dict(**kwarg) / dict(mapping, **kwarg) / dict(iterable, **kwarg)

  1. 功能:创建字典。
  2. 示例:
print(dict(a=1, b=2))    # 输出: {'a': 1, 'b': 2}
print(dict([('x', 1), ('y', 2)]))  # 输出: {'x': 1, 'y': 2}

6.3 序列操作类

6.3.1 len(s)

  1. 功能:返回对象的长度(元素个数)。
  2. 示例:
print(len('hello'))      # 输出: 5
print(len([1, 2, 3, 4])) # 输出: 4

6.3.2 max(iterable[, key]) / max(arg1, arg2, *args[, key])

  1. 功能:返回可迭代对象中的最大值,或多个参数中的最大值。key为可选的比较函数。
  2. 示例:
print(max([3, 1, 4]))    # 输出: 4
print(max(5, 2, 9))      # 输出: 9
# 按字符串长度比较
print(max(['apple', 'banana', 'cherry'], key=len))  # 输出: 'banana'

6.3.3 min(iterable[, key]) / min(arg1, arg2, *args[, key])

  1. 功能:返回最小值(用法同max)。
  2. 示例:
print(min([3, 1, 4]))    # 输出: 1
print(min('apple', 'banana', 'cherry', key=lambda x: x[1]))  # 输出: 'apple'(比较第二个字符)

6.3.4 sum(iterable[, start])

  1. 功能:返回可迭代对象中所有元素的和,start为初始值(默认为0)。
  2. 示例:
print(sum([1, 2, 3]))    # 输出: 6
print(sum([1, 2, 3], 10)) # 输出: 16(10+1+2+3)

6.3.5 sorted(iterable[, key][, reverse])

  1. 功能:返回一个新的已排序列表,原对象不变。
  2. 示例:
print(sorted([3, 1, 4]))    # 输出: [1, 3, 4]
print(sorted('hello', reverse=True))  # 输出: ['o', 'l', 'l', 'e', 'h']
# 按绝对值排序
print(sorted([-3, 1, -2], key=abs))   # 输出: [1, -2, -3]

6.3.6 reversed(seq)

  1. 功能:返回一个反向迭代器。
  2. 示例:
print(list(reversed([1, 2, 3])))  # 输出: [3, 2, 1]
print(''.join(reversed('hello'))) # 输出: 'olleh'

6.4 类型检查类

6.4.1 type(object)

  1. 功能:返回对象的类型。
  2. 示例:
print(type(42))          # 输出: <class 'int'>
print(type([1, 2]))      # 输出: <class 'list'>

6.4.2 isinstance(object, classinfo)

  1. 功能:判断对象是否是某个类或子类的实例。
  2. 示例:
print(isinstance(5, int))        # 输出: True
print(isinstance([], (list, tuple)))  # 输出: True(判断是否属于元组中任意一个类型)

6.4.3 issubclass(class, classinfo)

  1. 功能:判断类是否是另一个类或子类的子类。
  2. 示例:
class A: pass
class B(A): passprint(issubclass(B, A))  # 输出: True
print(issubclass(int, object))  # 输出: True(所有类都继承自object)

6.5 输入输出类

6.5.1 print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)

  1. 功能:将对象打印到标准输出。
  2. 示例:
print('Hello', 'World', sep='-')  # 输出: Hello-World
print('Data', end='; ')           # 输出: Data; (不换行)

6.5.2 input([prompt])

  1. 功能:从标准输入读取一行文本(返回字符串)。
  2. 示例:
name = input("请输入你的名字:")
print(f"你好,{name}!")

6.6 文件操作类

6.6.1 open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

  1. 功能:打开文件并返回文件对象。
  2. 示例:
# 写入文件
with open('test.txt', 'w', encoding='utf-8') as f:f.write('Hello\nWorld')# 读取文件
with open('test.txt', 'r', encoding='utf-8') as f:content = f.read()print(content)

6.7 迭代器与生成器类

6.7.1 range(start, stop[, step])

  1. 功能:返回一个不可变的整数序列(常用于循环)。
  2. 示例:
print(list(range(5)))       # 输出: [0, 1, 2, 3, 4]
print(list(range(1, 10, 2))) # 输出: [1, 3, 5, 7, 9]

6.7.2 enumerate(iterable, start=0)

  1. 功能:返回一个枚举对象(包含索引和值的元组)。
  2. 示例:
for i, char in enumerate('abc'):print(f"索引 {i}: {char}")
# 输出:
# 索引 0: a
# 索引 1: b
# 索引 2: c

6.7.3 zip(*iterables)

  1. 功能:将多个可迭代对象的元素打包成元组。
  2. 示例:
names = ['Alice', 'Bob']
ages = [25, 30]
print(list(zip(names, ages)))  # 输出: [('Alice', 25), ('Bob', 30)]# 解压
zipped = zip(names, ages)
n, a = zip(*zipped)
print(n)  # 输出: ('Alice', 'Bob')

6.8 高阶函数类

6.8.1 map(function, iterable, *iterables)

  1. 功能:对可迭代对象的每个元素应用函数,返回迭代器。
  2. 示例:
nums = [1, 2, 3]
squared = map(lambda x: x**2, nums)
print(list(squared))  # 输出: [1, 4, 9]# 多个可迭代对象
a = [1, 2, 3]
b = [4, 5, 6]
sums = map(lambda x, y: x + y, a, b)
print(list(sums))  # 输出: [5, 7, 9]

6.8.2 filter(function, iterable)

  1. 功能:过滤可迭代对象中的元素,返回符合条件的元素迭代器。
  2. 示例:
nums = [1, 2, 3, 4, 5]
even = filter(lambda x: x % 2 == 0, nums)
print(list(even))  # 输出: [2, 4]

6.8.3 reduce(function, iterable[, initializer])

  1. 功能:对可迭代对象的元素进行累积计算(需从functools导入)。
  2. 示例:
from functools import reduce
nums = [1, 2, 3, 4]
product = reduce(lambda x, y: x * y, nums)
print(product)  # 输出: 24(1×2×3×4)

6.9 其他常用函数

6.9.1 help([object])

  1. 功能:查看对象的帮助文档(交互式环境中常用)。
  2. 示例:
help(len)  # 查看len函数的帮助信息

6.9.2 id(object)

  1. 功能:返回对象的唯一标识符(内存地址)。
  2. 示例:
x = [1, 2, 3]
print(id(x))  # 输出: 140123456789012(具体值因环境而异)

6.9.3 dir([object])

  1. 功能:返回对象的所有属性和方法名(默认返回当前作用域的所有名称)。
  2. 示例:
print(dir(list))  # 列出列表类的所有属性和方法

6.9.4 globals()

  1. 功能:返回当前全局符号表的字典。
  2. 示例:
x = 42
print(globals()['x'])  # 输出: 42

6.9.5 locals()

  1. 功能:返回当前局部符号表的字典。
  2. 示例:
def test():y = 99print(locals())  # 输出: {'y': 99}test()

6.10 不常用但有用的函数

6.10.1 eval(expression[, globals[, locals]])

  1. 功能:执行字符串表达式并返回结果。
  2. 示例:
result = eval('2 + 3 * 4')
print(result)  # 输出: 14

6.10.2 exec(object[, globals[, locals]])

  1. 功能:执行Python代码(如字符串或代码对象)。
  2. 示例:
code = """
for i in range(3):print(i)
"""
exec(code)  # 输出: 0 1 2

6.10.3 ord(c)

  1. 功能:返回单个字符的Unicode码点。
  2. 示例:
print(ord('A'))  # 输出: 65
print(ord('中'))  # 输出: 20013

6.10.4 chr(i)

  1. 功能:返回Unicode码点对应的字符。
  2. 示例:
print(chr(65))   # 输出: 'A'
print(chr(20013)) # 输出: '中'

微语录:人是为了救赎自己而活着的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/92087.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/92087.shtml
英文地址,请注明出处:http://en.pswp.cn/diannao/92087.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux安装Mysql后添加mysql的用户和密码

在 MySQL 中创建用户并设置密码的完整指南如下&#xff1a; 方法 1&#xff1a;使用 CREATE USER 语句&#xff08;推荐&#xff09; -- 创建新用户并设置密码 CREATE USER newuserlocalhost IDENTIFIED BY your_password;-- 授予权限&#xff08;示例&#xff1a;授予所有数据…

React hooks——memo

一、简介React.memo 是 React 提供的一个高阶组件&#xff08;Higher-Order Component&#xff09;&#xff0c;用于优化函数组件的渲染性能&#xff0c;它通过浅比较&#xff08;shallow compare&#xff09;props 的变化来决定是否重新渲染组件。1.1 基本用法const MyCompone…

leetcode15.三数之和题解:逻辑清晰带你分析

介绍 题源 分析 1.双指针固定一个数 首先明白一点&#xff0c;我们有三个数&#xff0c;我们想使用双指针&#xff0c;那就必须固定一个数。 2.二分 本题还涉及二分&#xff0c;双指针经常和二分结合使用&#xff08;二分本质就是双指针&#xff0c;仔细思考这思考这句话&…

exports使用 package.json字段控制如何访问你的 npm 包

目录 想象一下你正在开发一个 npm 包…… 术语 什么是exports领域&#xff1f; exports好处 保护内部文件 多格式包 将子路径映射到dist目录 子路径导出 单一入口点 多个入口点 公开软件包文件的子集 有条件出口 设置使用条件 默认条件 句法 针对 Node.js 和浏…

AngularJS 安装使用教程

一、AngularJS 简介 AngularJS 是 Google 开发的一款前端 JavaScript 框架&#xff0c;采用 MVVM 架构&#xff0c;提供了数据双向绑定、依赖注入、模块化、路由管理等强大功能&#xff0c;适合构建单页面应用&#xff08;SPA&#xff09;。注意&#xff1a;AngularJS&#xf…

基于python和neo4j构建知识图谱医药问答系统

一、pyahocorasick1.安装 pyahocorasick 包&#xff1a; pip install pyahocorasick -i https://pypi.tuna.tsinghua.edu.cn/simple/pip install pyahocorasick &#xff1a;安装名为 pyahocorasick 的第三方库&#x1f449; 这个库是一个 Aho-Corasick 多模匹配算法 的 Python…

片上网络(NoC)拓扑结构比较

1. 拓扑结构拓扑结构延迟吞吐量跳数功耗面积开销可扩展性容错性布线复杂度适合通信模式Mesh&#xff08;网格&#xff09;低&#xff08;O(√N)&#xff09;高&#xff08;多路径并行&#xff09;O(√N)中高&#xff08;路由器多&#xff09;中高&#xff08;规则布线&#xff…

git merge 命令有什么作用?具体如何使用?

回答重点git merge 命令主要用于将两个分支的历史和内容合并在一起。简而言之&#xff0c;它会将一个分支的更改引入到当前分支中。常见的使用场景是将功能分支&#xff08;feature branch&#xff09;的修改合并回主分支&#xff08;main branch&#xff09;或者开发分支&…

【NLP舆情分析】基于python微博舆情分析可视化系统(flask+pandas+echarts) 视频教程 - jieba库分词简介及使用

大家好&#xff0c;我是java1234_小锋老师&#xff0c;最近写了一套【NLP舆情分析】基于python微博舆情分析可视化系统(flaskpandasecharts)视频教程&#xff0c;持续更新中&#xff0c;计划月底更新完&#xff0c;感谢支持。今天讲解 jieba库分词简介及使用 视频在线地址&…

大模型的后训练与逻辑能力

《DeepSeek原生应用与智能体开发实践》【摘要 书评 试读】- 京东图书 在人工智能与机器学习领域&#xff0c;模型的后训练阶段不仅是技术流程中的关键环节&#xff0c;更是提升模型性能&#xff0c;尤其是数学逻辑能力的“黄金时期”。这一阶段&#xff0c;通过对已初步训练好…

pycharm安装教程-PyCharm2025安装步骤【MAC版】附带安装包

pycharm安装教程-PyCharm2025安装详细步骤【MAC版】安装安装包获取&#xff08;文章末尾&#xff09;今天来给大家分享 Mac 系统安装 PyCharm&#xff0c;附带安装包资源安装&#xff0c; PyCharm 相关就不叙述了&#xff0c;直接开始安装&#xff01; 安装 2024版本、2025年…

【React Native】路由跳转

Link 跳转的路径&#xff0c;就在href里写/details。路径都是相对于app目录来写的&#xff0c;也就是说app目录就是/。很多时候&#xff0c;需要跳转的组件比较复杂。比方说&#xff0c;要在里面要嵌套按钮&#xff0c;或者其他东西。这种情况下&#xff0c;就可以在Link组件里…

使用 Spring Boot + AbstractRoutingDataSource 实现动态切换数据源

1. 动态切换数据源的原理AbstractRoutingDataSource 是 Spring 提供的一个抽象类&#xff0c;它通过实现 determineCurrentLookupKey 方法&#xff0c;根据上下文信息决定当前使用的数据源。核心流程如下&#xff1a;定义多数据源配置&#xff1a;注册多个数据源。实现动态数据…

Kubernetes (K8S)知识详解

Kubernetes (K8S) 是什么&#xff1f; Kubernetes 是 Google 在 2014 年开源的生产级别的容器编排技术&#xff08;编排也可以简单理解为调度、管理&#xff09;&#xff0c;用于容器化应用的自动化部署、扩展和管理。它的前身是 Google 内部的 Borg 项目&#xff0c;Borg 是 …

在github上传python项目,然后在另外一台电脑下载下来后如何保障成功运行

如何在 GitHub 上传并在另一台电脑成功运行 Python 项目✅ 一、上传前&#xff08;本地准备&#xff09; 在你的项目文件夹中进行以下准备&#xff1a; 1. 确保结构清晰 my_project/ ├── main.py ├── utils.py ├── config.yaml ├── requirements.txt └── README…

详解Mysql Order by排序底层原理

MySQL 的 ORDER BY 子句实现排序是一个涉及查询优化、内存管理和磁盘 I/O 的复杂过程。其核心目标是高效地将结果集按照指定列和顺序排列。一、确定排序模式 (Sort Mode)MySQL 根据查询特性和系统变量决定采用哪种排序策略&#xff1a;1.1 Rowid 排序<sort_key, rowid> 模…

SpringBoot的介绍和项目搭建

SpringBoot是简化Spring应用开发的一个框架&#xff0c;他是Spring技术栈的整合。优点&#xff1a;能够快速创建独立运行的Spring项目以及与主流框架集成使用嵌入式的Servlet容器&#xff0c;应用无需打成war包&#xff0c;内嵌tomcatStarters自动依赖和版本控制大量的自动装配…

Selenium 攻略:从元素操作到 WebDriver 实战

在自动化测试、网页数据爬取、批量操作网页等场景中&#xff0c;Selenium 无疑是最受欢迎的工具之一。作为一款强大的 Web 自动化工具&#xff0c;它能模拟人类操作浏览器的行为&#xff0c;实现点击、输入、跳转等一系列动作。本文将从基础到进阶&#xff0c;全面解析 Seleniu…

【算法训练营Day14】二叉树part4

文章目录找树左下角的值路径总和总结&#xff1a;递归函数的返回值路径总和 II总结&#xff1a;二叉树递归的思考从中序与后序遍历序列构造二叉树找树左下角的值 题目链接&#xff1a;513. 找树左下角的值 解题逻辑&#xff1a; 使用层序遍历&#xff0c;将最后一层的第一个元…

工资系统如何计算工资

工资系统计算工资是一个集成数据收集、规则应用、自动核算和合规审核的自动化过程&#xff0c;以下是其核心原理和步骤&#xff0c;结合技术实现与法规要求进行说明&#xff1a;⚙️ 一、工资系统的基本框架与数据准备系统初始化与规则配置企业信息设置&#xff1a;录入公司名称…