python 函数部分
函数def fun(形参): 定义函数 fun(实参) 执行函数 return 函数的返回值,遇到return不执行下面的代码,无return和直接写return返回的是None,返回值有多个时会放到元组里 ''' 函数的注释 标明函数的作用以及每个值得意义 使用 函数名.__doc__ 即可查询该函数得注释值 ''' 函数名 就是变量的功能加上()就能执行(也叫第一对象) 1、可以相互赋值
def fun()print('123qwe') f = fun f()
2、可以当成函数的参数
def fun():print('123') def fun2(argc):argc()print('111') fun2(fun)
3、可以当成容器类数据的参数
def fun():print('123') def fun2():print('111') def fun3():print('3333333') list1 = [fun, fun2, fun3] for i in list1:i()
4、可以当成函数的返回值
def fun():print('123') def fun2(argv): print('111')return argv #函数作为返回值 f = fun2(fun) #将函数名作为参数 f() 说明:此时的argv就是fun就是f f()实际上执行的是fun() 所以输出为:111 123
函数的传参 从实参角度传参顺序: 位置参数=》关键字参数
def func1(x, y, z):print(x, y, z) func1(1, 2, 3) #位置参数 必须一一对应 func1(x=1, y=2, z=3) #关键字参数可不分顺序 返回大数 三元运算符def compare(a, b):return a if a > b else b 或 print(a if a > b else b) 混合参数, 关键字参数必须在位置参数的后面。def fun(argv1, argv2, argv3):print(argv1)print(argv2)print(argv3) fun(1, 2, argv3=3) #混合参数中位置参数一一对应,关键字参数必须在位置参数最后
从形参角度传参顺序: 位置参数=》*args=》默认参数=》**kwargs 1、位置参数 与实参角度一样,必须一一对应,位置参数必须传值 2、默认参数 默认参数必须在位置参数后面, 默认参数是个可变数据类型当函数中有默认参数,那么实参使用默认的,如果写就覆盖默认参数。使用方法为sex = 'hhhh'(关键字传参法)
def register(name, sex='男'):with open('register.txt', encoding='utf-8',mode='a') as fd:fd.write('{},{}\n'.format(name, sex)) while True:print('q exit')name = input('name=')sex = input('sex=')if name.upper() == 'Q':breakregister(name) # 不传实参时 形参会自动使用默认参数
--------------------------------、
def default_param(a, l = []) # 默认参数是可变数据类型 l.append(a)print(l) default_param('hello') default_param('world')
动态参数:fun(*args, **kwargs)万能参实 当函数的传的参数不定时使用。*args接收的是位置参数,包括空值也不会报错,并存放到元组。 **kwargs接收的是关键字参数,并存放到字典
def fun(*args, **kwargs):print(args) #输出类型为元组(针对所有位置参数)print(kwargs) #输出字典 fun(1, 2, 3, 4, 5, 6, 7,'alex', '老男孩', a='w', b='q', c='323') 输出: (1, 2, 3, 4, 5, 6, 7, 'alex', '老男孩') {'a': 'w', 'b': 'q', 'c': '323'}
打散、聚合功能,*将形参无论什么格式以单个元素放入元组中。 **将形参聚合到字典中 (不会看这个)
def fun(*args, **kwargs): #形参加*表示将传参聚合并放入一个元组中, 加**表示聚合到字典中print(args)print(kwargs) list1 = [1, 2, 3, 4] tupe1 = (1, 2, 3, 4) list2 = ['alex', 'wuser', 4] dic = {'qq':1, 'er':'wwe'} fun(list1, *tupe1, *list2, cc = 4, **dic) #实参加 * 表示将位置参数迭代打散传入,作用域为 str tuple set list ** 表示将字典和关键字参数传入 输出: ([1, 2, 3, 4], 1, 2, 3, 4, 'alex', 'wuser', 4) {'cc': 4, 'qq': 1, 'er': 'wwe'}
将dic 以*dic打散为实参传入 形参接受 到的是dic的key值 实参传入的字典key不能使用纯数字,因为传入的参数是当作变量使用的python的名称空间 全局名命空间 临时名称空间 内置名称空间 运行py代码时,遇到一个变量时python会开辟一段空间,存的是 变量和值的指针的关系,如name与alix的id的关系,当print(name)时,会先找name然后再找对应关系,找到对应指针后重内存中找到alix并打印。 遇到函数时只是将函数的名字记录到内存空间,其内部如何根本不关心,在函数调用时,python会开辟一段空间将记录函数内部的变量和对应值指针的关系记录,函数中的变量只能在函数内部使用,随着函数结束这块内存也会消失。 代码的开始 创建的存储‘变量与值的关系’的空间叫全局名命空间(全局名命空间); 在函数的运行中开辟的临时的空间叫做局部名命空间(临时名称空间) 系统函数的是 内置名称空间 加载顺序 :内置名称空间-》全局名称空间-》局部名称空间 取值顺序: 局部名称空间-》全局名称空间-》内置名称空间 作用域:全局作用域:全局名称空间 内置名称空间局部作用域:临时名称空间关键字: 注意如果不调用该函数,即使使用了global和nonlocal修饰 也不会起作用 #global 在任何作用域 改变一个全局变量 ,如global 修饰的变量名不存在 相当于新建一个全局变量
name = 'hello' def fun():global name 使用关键字后,调用函数后name变为全局变量name = 'abc' fun() print(name) 输出: abc #nonlocal 不能修改全局变量;只能在局部作用域中使用nonlocal,只改变当前作用域的变量,如过当前找不到就会像上层函数找,如果每层都找不到会报错。用的少 当py文件特别大时在嵌套过多时用def fun():name = '123'print('qq%s'% name)def fun2():nonlocal namename = 'abc'print(name)fun2()print(name) fun() 输出: qq123 abc abc
-----------------a = 1 def fun_1():a = 2def fun_2():global aa = 3def fun_3():a = 4print(a)print(a)fun_3()print(a)print(a)fun_2()print(a) print(a) fun_1() print(a) 输出:1 2 3 4 3 3 1
转载于:https://www.cnblogs.com/Mr-wangxd/p/9449986.html
python 函数部分相关推荐
- Pass算子python 函数
Pass算子python 函数 函数 • 函数是代码的一种组织形式 • 函数应该能完成一项特定的工作,而且一般一个函数只完成一项工作 • 有些语言,分函数和过程两个概念,通俗解释是,有返回结果的是函数 ...
- Python 函数的可变参数(*paramter与**paramter)的使用
Python 函数的可变参数主要有 *paramter与**paramter 可变参数主要有 *paramter的作用 接受任意多个实际参数并放到一个元组中 def people(*people):f ...
- 【python教程入门学习】Python函数定义及传参方式详解(4种)
这篇文章主要介绍了Python函数定义及传参方式详解(4种),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 一.函数初识 1.定 ...
- python系统提供构造函数传入参数_[ Python入门教程 ] Python函数定义和使用
函数是一段可以重复多次调用的代码,通过输入的参数值,返回需要的结果.通过使用函数,可以提高代码的重复利用率.本文主要介绍Python函数的定义.调用和函数参数设置方法. 函数的定义 Python函数定 ...
- python函数第二次运行报错_Python学习笔记2-函数、高级特性
函数 调用函数 要调用一个函数,需要知道函数的名称和参数,比如求绝对值的函数abs,只有一个参数 >>> abs(100) 100 >>> abs(-20) 20 ...
- [教程]Python函数的参数
Python函数的参数 位置参数.默认值参数.可变参数.关键字参数和命名关键字参数 1 函数结构 def 函数名(参数):函数体返回值 2 位置参数 略 3 默认值参数 略 4 可变参数 # 可变长度 ...
- python函数+定义+调用+多返回值+匿名函数+lambda+高级函数(reduce、map、filter)
python函数+定义+调用+多返回值+匿名函数+lambda+高级函数(reduce.map.filter) Python 中函数的应用非常广泛,比如 input() .print().range( ...
- python函数参数*arg和**kwargs分别代表什么?
python函数参数*arg和**kwargs分别代表什么? 注意: 注意:参数arg.*args.**kwargs三个参数的位置必须是一定的.必须是(arg,*args,**kwargs)这个顺序, ...
- python 函数 默认参数
python 函数 默认参数 def add(a=1, b=2): # a,b设置默认参数c = a + breturn c c = add(a=2) # 如果不填,就是默认参数 print(c) 4
- Python的零基础超详细讲解(第十二天)-Python函数及使用
基础篇往期文章: Python的零基础超详细讲解(第一天)-Python简介以及下载_编程简单学的博客-CSDN博客 Python的零基础超详细讲解(第二天)-Python的基础语法1_编程简单学的博 ...
最新文章
- 如何利用SOM网络进行柴油机故障诊断
- ZOJ 3702 Gibonacci number(数学推导题)
- ae制作数据可视化_我如何精心制作真正可怕的数据可视化
- Java从控制台中读取数据完全攻略
- VSCode 汉化、设置为 中文语言显示 、中文界面
- HDOJ 2066 HDU 2066 一个人的旅行 ACM 2066 IN HDU
- linux hibernate suspend 区别,实现Linux休眠(sleep/hibernate)和挂起(suspend)[转]
- java中的文本框_java里的JTextField文本框怎么设置大小?
- JVM 晋升到老年代的动态年龄判断
- 微信公众号H5游戏平台完整源码放送给大家
- 计算机教师简介招聘情况,招聘教师个人简历模板
- 移动端强大的富文本编辑器richeditor-android
- 联想笔记本电脑安装Ubuntu18.04系统
- Elastic认证考试过程(2022.11.13 06:15)
- 基于Python实现Jacobi迭代法、Gauss-Seidel迭代法和SOR法方程组(三)
- primo驱动启动顺序
- 最近Flash页面无法访问的问题解决方法
- 微信7012android1620,微信7012版
- 安全测试-短信验证码
- java反射的作用于原理、初学者
热门文章
- The source attachment does not contain the source for the file Activity.class
- Eclipse安装软件长时间停留在calculating requirements and dependencies
- 10 种机器学习算法的要点(附 Python 和 R 代码)(转载)
- 2017年深度学习十大趋势预测
- AS下配置OpenCV环境
- JDK的环境变量配置
- dsoframer控件注册,解注册和检查注册情况
- JavaScript高级程序设计学习笔记二(在HTML中使用JavaScript)
- Canny边缘检测原理及C#程序实现
- 《Spark与Hadoop大数据分析》——1.2 大数据科学以及Hadoop和Spark在其中承担的角色...