函数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 函数部分相关推荐

  1. Pass算子python 函数

    Pass算子python 函数 函数 • 函数是代码的一种组织形式 • 函数应该能完成一项特定的工作,而且一般一个函数只完成一项工作 • 有些语言,分函数和过程两个概念,通俗解释是,有返回结果的是函数 ...

  2. Python 函数的可变参数(*paramter与**paramter)的使用

    Python 函数的可变参数主要有 *paramter与**paramter 可变参数主要有 *paramter的作用 接受任意多个实际参数并放到一个元组中 def people(*people):f ...

  3. 【python教程入门学习】Python函数定义及传参方式详解(4种)

    这篇文章主要介绍了Python函数定义及传参方式详解(4种),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 一.函数初识 1.定 ...

  4. python系统提供构造函数传入参数_[ Python入门教程 ] Python函数定义和使用

    函数是一段可以重复多次调用的代码,通过输入的参数值,返回需要的结果.通过使用函数,可以提高代码的重复利用率.本文主要介绍Python函数的定义.调用和函数参数设置方法. 函数的定义 Python函数定 ...

  5. python函数第二次运行报错_Python学习笔记2-函数、高级特性

    函数 调用函数 要调用一个函数,需要知道函数的名称和参数,比如求绝对值的函数abs,只有一个参数 >>> abs(100) 100 >>> abs(-20) 20 ...

  6. [教程]Python函数的参数

    Python函数的参数 位置参数.默认值参数.可变参数.关键字参数和命名关键字参数 1 函数结构 def 函数名(参数):函数体返回值 2 位置参数 略 3 默认值参数 略 4 可变参数 # 可变长度 ...

  7. python函数+定义+调用+多返回值+匿名函数+lambda+高级函数(reduce、map、filter)

    python函数+定义+调用+多返回值+匿名函数+lambda+高级函数(reduce.map.filter) Python 中函数的应用非常广泛,比如 input() .print().range( ...

  8. python函数参数*arg和**kwargs分别代表什么?

    python函数参数*arg和**kwargs分别代表什么? 注意: 注意:参数arg.*args.**kwargs三个参数的位置必须是一定的.必须是(arg,*args,**kwargs)这个顺序, ...

  9. python 函数 默认参数

    python 函数 默认参数 def add(a=1, b=2): # a,b设置默认参数c = a + breturn c c = add(a=2) # 如果不填,就是默认参数 print(c) 4

  10. Python的零基础超详细讲解(第十二天)-Python函数及使用

    基础篇往期文章: Python的零基础超详细讲解(第一天)-Python简介以及下载_编程简单学的博客-CSDN博客 Python的零基础超详细讲解(第二天)-Python的基础语法1_编程简单学的博 ...

最新文章

  1. 如何利用SOM网络进行柴油机故障诊断
  2. ZOJ 3702 Gibonacci number(数学推导题)
  3. ae制作数据可视化_我如何精心制作真正可怕的数据可视化
  4. Java从控制台中读取数据完全攻略
  5. VSCode 汉化、设置为 中文语言显示 、中文界面
  6. HDOJ 2066 HDU 2066 一个人的旅行 ACM 2066 IN HDU
  7. linux hibernate suspend 区别,实现Linux休眠(sleep/hibernate)和挂起(suspend)[转]
  8. java中的文本框_java里的JTextField文本框怎么设置大小?
  9. JVM 晋升到老年代的动态年龄判断
  10. 微信公众号H5游戏平台完整源码放送给大家
  11. 计算机教师简介招聘情况,招聘教师个人简历模板
  12. 移动端强大的富文本编辑器richeditor-android
  13. 联想笔记本电脑安装Ubuntu18.04系统
  14. Elastic认证考试过程(2022.11.13 06:15)
  15. 基于Python实现Jacobi迭代法、Gauss-Seidel迭代法和SOR法方程组(三)
  16. primo驱动启动顺序
  17. 最近Flash页面无法访问的问题解决方法
  18. 微信7012android1620,微信7012版
  19. 安全测试-短信验证码
  20. java反射的作用于原理、初学者

热门文章

  1. The source attachment does not contain the source for the file Activity.class
  2. Eclipse安装软件长时间停留在calculating requirements and dependencies
  3. 10 种机器学习算法的要点(附 Python 和 R 代码)(转载)
  4. 2017年深度学习十大趋势预测
  5. AS下配置OpenCV环境
  6. JDK的环境变量配置
  7. dsoframer控件注册,解注册和检查注册情况
  8. JavaScript高级程序设计学习笔记二(在HTML中使用JavaScript)
  9. Canny边缘检测原理及C#程序实现
  10. 《Spark与Hadoop大数据分析》——1.2 大数据科学以及Hadoop和Spark在其中承担的角色...