python3_函数_形参调用方式 / 不定长参数 / 函数返回值 / 变量作用域 / 匿名函数 / 递归调用 / 函数式编程 / 高阶函数 / gobal和nonlocal关键字 / 内置函数

article/2025/9/21 13:35:49

1.形参的调用方式

1. 位置参数调用

2. 关键词参数调用

原则: 关键词参数调用不能写在位置参数调用的前边

def test1(name, age):print("name:", name)print("age:", age)if "__main__" == __name__:test1("admin_maxin", age=23)  # righttest1(name = "admin_maxin", 23)  # error

2.不定长参数

1. 加了*的参数会以元组(tuple)形式导入,存放所有未命名的变量参数(位置参数)

2. 加了**的参数会以字典的形式导入(关键字参数)

3. **的参数不能出现在*的参数的前边

4. *可以单独出现,*后的参数必须通过关键字调用

def test2_1(name, age=18, *args):print(name, age)print(type(args))print(args)def test2_2(**kwargs):print(type(kwargs))print(kwargs)def test3_3(name, *, age=18):  print(name, age)if "__main__" == __name__:test2_1("mx", 20, 1, 2, 3, 4)test2_2(name="mx", age=23)test3_3("mx", age=23)OUTPUT:
--> mx 20<class 'tuple'>(1, 2, 3, 4, 5)
--> <class 'dict'>{'name': 'mx', 'age': 23}
--> mx 23

3.函数的返回值

1. 返回值数等于0,返回NULL

2. 返回值数等于1,返回object

3. 返回值数>1,返回tuple

def test3_1(name="mx", age=23):    print(name, age)def test3_2(name="mx", age=23):   return namedef test3_3(name="mx", age=23):return name, ageif "__main__" == __name__:print(type(test2_1()))print(type(test2_2()))print(type(test2_3()))OUTPUT:
<class 'NoneType'>
<class 'str'>
<class 'tuple'>

4.变量作用域

python3中变量作用域一共有4种:

1. L(local)局部作用域

2. Enclosing闭包函数外的函数中

3. G(global)全局作用域

4. B(Built - in)内建作用域

变量查找规则:局部找不到便会去局部外的局部查找(例如闭包),再找不到就会去全局找,再者去内建中查找。

x = int(2.9)         # 内建作用域
g_count = 0          # 全局作用域def outer():o_count = 1      # 闭包函数外的函数中x = 3def inner():     # 闭包函数i_count = 2  # 局部作用域print(x)inner()if "__main__" == __name__:outer()OUTPUT:
--> 3

5.匿名函数(lambda)

1. lambda 只是一个表达式,函数体比 def 简单很多

2. lambda主体是一个表达式,而不是代码块。仅能在lambda表达式中封装有限的逻辑进去。

3. lambda 函数拥有自己的命名空间,且不能访问自己参数列表之外或全局命名空间里的参数。

4. 虽然lambda函数看起来只能写一行,却不等同于C或C++的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行效率。

注意:匿名函数同样支持默认值参数

y = lambda x=2: x**2if "__main__" == __name__:print(y())print(y(3))OUTPUT:
--> 4
--> 9

6.函数递归调用

1. 必须有一个明确的结束条件

2. 每进入更深一层次的递归,问题的规模相比于上一次递归都应该有所减少

3. 递归的效率不高,层次过多会造成栈溢出(函数的调用是通过栈(stack)这种数据类型来完成的,由于栈的大小不是无限的,所以递归调用的次数过多会导致栈溢出。)

注意:python中最大递归深度为999

 

7.函数式编程

函数式编程语言是一种抽象程度非常高的编程范式,纯粹的函数编程语言编写的函数没有变量。因此任何一个函数只要输入是确定的,输出就是确定的,这种纯函数我们称之为没有副作用。而允许使用变量的程序设计语言,由于函数内部的变量状态不确定,同样的输入可能得到不同的输出,因此,这种函数是有副作用的。函数式编程的一个特点就是,允许将函数本身作为参数传入另一个函数,还允许返回一个函数。python对函数式编程提供了部分支持,由于python允许使用变量,因此,python不是纯函数式编程语言

注意: 完全函数式编程热门语言:lisp, haskell, erlang等

# (1+2)*3-4
var result = subtract(multiply(add(1, 2) + 3) - 4)

8. 高阶函数

 函数接收另外一个函数作为参数,这种函数称之为高阶函数

9.global和nonlocal关键字

当内部作用域想要修改外部作用域的变量时,则会用到这两个关键字。

1. global: 修改全局变量

2. nonlocal: 修改局部外的局部中的变量

num = 1def test9_1():global numprint(num)num = 123print(num)if "__main__" == __name__:test9_1()print("查看全局变量是否发生变化:", num)
def outer():num = 1def inner():nonlocal num   # nonlocal关键字声明num = 123print(num)inner()print("查看局部外的局部当中的变量是否发生变化:", num)if "__main__" == __name__:outer()

10.内置函数

https://blog.csdn.net/admin_maxin/article/details/81806081

 


http://chatgpt.dhexx.cn/article/UGLN1Fl6.shtml

相关文章

关于Vivado综合选项——Out of context per IP和Gobal

Vivado生成IP输出文件注意的地方&#xff0c;是选择Global还是Out of context per IP: vivado默认是第二种&#xff0c;Out of context per IP是指让vivado在综合的时候对IP进行单独综合&#xff0c;生成.dcp文件&#xff0c;然后再工程要用到IP的时候&#xff0c;只需从.dcp文…

Oracle 临时表 (Gobal Temporary Table)

提问&#xff0c;插入数据之后&#xff0c;COMMIT&#xff0c;数据是否一定会在表里呢&#xff1f; 回答 一定会在。我认为没有错 回答 可能会在。也没有错 → 没在就一定是被删了&#xff0c;那么有一种表&#xff0c;会在Commit时&#xff0c;清空所有数据。 刚才说的那种…

转载:关于Vivado综合选项——Out of context per IP和Gobal

转载&#xff1a;关于Vivado综合选项——Out of context per IP和Gobal 原文地址&#xff1a;https://www.cnblogs.com/yhsy1002/p/7441309.html 关于Vivado综合选项——Out of context per IP和Gobal Vivado生成IP输出文件注意的地方&#xff0c;是选择Global还是Out of cont…

An Implemention of Realtime Gobal Illumination

前言&#xff1a;CG画面的“效果”最重要&#xff0c;至于达到这一效果所使用的技术倒是其次&#xff0c;一切的一切对于观众来说都是透明的。即使是Pixar都认为仅仅One Bounce Indirect Illumination对构建一个足够真实可信的光照效果足矣。看过这里的SII&#xff0c;我想你对…

Oracle ORA-06502 ORA-06512

问题描述&#xff1a; 发现存储过程里有对oracle <Collection>类型的操作 sql_text : select a.* from t_Drivewaystatus a inner join t_intersection b on a.intersectioncode b.intersectioncode where b.used 1 order by a.intersectioncode,a.drivewaycode; open…

ora-20011 ora-01555

问题 解决方案 ora undoinfo alter tablespace undotbs1 add datafile size 30g; alter tablespace undotbs2 add datafile size 30g; ora undoinfoora tempfree alter tablespace temp add tempfile size 30g; ora tempfree

ora-01461

插入数据长度大于4000&#xff0c;报该错ora-01461 解决方式&#xff1a;修改字段类型为 clob&#xff0c; 第一步&#xff1a;添加一个clob类型字段 ALTER TABLE tb_a ADD (RYZP CLOB);第二步&#xff1a;删除原来的字段 ALTER TABLE tb_a DROP COLUMN RYZP1;上面只是我工…

ORA-01156

需要关闭mrp进行操作。 alter database recover managed standby database cancel; alter database recover managed standby database parallel 10 using current logfile disconnect from session;

拼接字符串报错:Oracle: ORA-06512:字符串缓冲区太小

报错目前可以肯定的是&#xff0c;拼接的字符串超过oracle定义的上限。 plsql中varchar2长度上限是4000字节 报错语句定位到下面的这句&#xff1a; 我这里的p_zbdcdyh是存储过程的输出参数&#xff0c;故是默认数据库的字符串varchar2的大小。 p_zbdcdyh:p_zbdcdyh||,||PSELEN…

图像传感器设计资料-764-GSPRINT4502 2MP-4.5微米 全局快门 高速 CMOS 图像传感器

GSPRINT4502 2MP-4.5微米 全局快门 高速 CMOS 图像传感器 GSPRINT4502是一款一千万分辨率 (2048 x 1216) &#xff0c;2/3”光学尺寸的高速图像传感器&#xff0c;采用最新的4.5微米电荷域全局快门像素设计&#xff0c;实现30ke-的满阱容量和小于4e-的读出噪声。利用先进的65n…

转:详细图解,一眼就能看懂!卷帘快门(Rolling Shutter)与全局快门(Global Shutter)的区别

什么是快门 快门是照相机用来控制感光片有效曝光时间的机构。是照相机的一个重要组成部分&#xff0c;它的结构、形式及功能是衡量照相机档次的一个重要因素。 什么是Global Shutter&#xff08;Total Shutter&#xff09;&#xff1f; 通过整幅场景在同一时间曝光实现的。Sen…

详细图解,一眼就能看懂!卷帘快门(Rolling Shutter)与全局快门(Global Shutter)的区别

什么是快门 快门是照相机用来控制感光片有效曝光时间的机构。是照相机的一个重要组成部分&#xff0c;它的结构、形式及功能是衡量照相机档次的一个重要因素。 什么是Global Shutter&#xff08;Total Shutter&#xff09;&#xff1f; 通过整幅场景在同一时间曝光实现的。S…

VIO与全局快门及轮速计的一些应用小技巧

封面就用一个可爱的小车车~ 之前各种针对VIO&#xff0c;VSLAM和VINS的工程注意事项都讲过了 今天的内容主要是针对VSLAM&#xff0c;VIO的实用性。 比如Td&#xff0c;同步对时&#xff0c;内参&#xff0c;外参这一串 最近比较忙&#xff0c;简单写点全局快门和轮速计的东…

图解:卷帘快门(Rolling shutter)与全局快门(global shutter)的区别

什么是快门 快门是照相机用来控制感光片有效曝光时间的机构。是照相机的一个重要组成部分&#xff0c;它的结构、形式及功能是衡量照相机档次的一个重要因素。 什么是Global Shutter&#xff08;Total Shutter&#xff09;&#xff1f; 通过整幅场景在同一时间曝光实现的。Sens…

卷帘快门(Rolling Shutter)与全局快门(Global Shutter)的区别

转载的原始连接&#xff1a; https://blog.csdn.net/abcwoabcwo/article/details/93099982 快门是照相机用来控制感光片有效曝光时间的机构。是照相机的一个重要组成部分&#xff0c;它的结构、形式及功能是衡量照相机档次的一个重要因素。 什么是Global Shutter&#xff08;…

安森美的全局快门图像传感器解决机器视觉的成像需求

在“工业4.0”和“中国制造2025”的大势下&#xff0c;工业自动化趋势持续增强&#xff0c;机器视觉成为电子行业重要的新兴领域。在持续的自动化需求、社会安全保障需求和市场经济实力的推动下&#xff0c;全球机器视觉和智能交通系统市场迎来发展热潮。在中国&#xff0c;越来…

763-GMAX3809 1.1” 900万分辨率全局快门CMOS图像传感器

GMAX3809 1.1” 900万分辨率全局快门CMOS图像传感器 GMAX3809采用3.8μm像素设计&#xff0c;光学尺寸为1.1”&#xff0c;分辨率为900万&#xff0c;12bit数据输出最快帧频65fps。 GMAX3809采用了3.8μm的大像素设计&#xff0c;有效分辨率为4096(H) x 2160(V) (…

全局快门和卷帘快门(Global shutter and Rolling shutter)

全局快门和卷帘快门 “果冻效应”是什么&#xff1f;用相机拍下扇叶&#xff0c;为什么会发生扭曲变形&#xff1f; 相机两种曝光方式的优劣&#xff1a;全局曝光和卷帘曝光 卷帘快门和全局快门的区别 全局曝光和卷帘曝光是常见的相机曝光方式 一般来说&#xff0c;CCD相机是全…

工业相机快门类型:卷帘快门和全局快门——哪个最好?

CMOS 成像传感器是每个工业相机系统的核心&#xff0c;但它们有两种快门方式——卷帘快门或全局快门。每种类型的快门都有其优点&#xff0c;但哪一种最好&#xff1f;这取决于具体的应用程序。所以&#xff0c;让我们来看看它们之间的差异&#xff0c;以帮助您决定哪一个最适合…

图解:卷帘快门(Rolling_shutter)与全局快门(global_shutter)的区别

[toc](卷帘快门(Rolling shutter)与全局快门(global shutter)的区别) 卷帘快门(Rolling shutter)与全局快门(global shutter)的区别 快门是照相机用来控制感光片有效曝光时间的机构。是照相机的一个重要组成部分&#xff0c;它的结构、形式及功能是衡量照相机档次的一个重要因…