1,   *args   动态 参数,万能参数

*args就是接受实参对应的剩余的位置参数,并将其放在元组中。在定义函数时,*args代表的是聚合。

def func(*args):
print(args)
func(1,34,'jdai',5,56,66)#(1, 34, 'jdai', 5, 56, 66)
def func(a,b,c,d,*args,e='男'):
print(a)
print(b)
print(c)
print(d)
print(args)
print(e)
func(1,2,3,4,5,10,5,6,7,8,e='女')# (5, 10, 5, 6, 7, 8)

2,**kwargs,动态传参,只接受关键字参数,将所有的关键字参数(无意义的)放到一个字典中。

最终顺序(形参角度)

def func(a,b,c,**kwargs):
print(kwargs)
func(1,3,4,r=6,t=7,y=0)

位置传参,*args,  默认参数   **kwargs

def func(a,b,c,d,*args,e='男',**kwargs):
print(a)
print(b)
print(c)
print(d)
print(args)#(5, 10, 5, 6, 7, 8)
print(e)
print(kwargs)#{'f': '女', 'h': 48, 'g': 5}
func(1,2,3,4,5,10,5,6,7,8,f='女',g=5,h=48)

3,  *号的魔法运用,在函数调用执行时,*代表打散。*加可迭代对象(list,tuple,set,str,dict的键),代表打散,将元素一一添加到args。

def func(*args):
print(args)
li = [1,2,3,4,6]
l2 = [3,6,6,7,77,66]
tu = ('eqwj','ee','ui')
func(*li,*l2,*tu)

(1, 2, 3, 4, 6, 3, 6, 6, 7, 77, 66, 'eqwj', 'ee', 'ui')将元素一一添加到args中。

def func(**kwargs):
print(kwargs)
dic = {'name':'alex','age':44}
dic1 = {'home':'taiwan','hobby':'football'}
func(**dic,**dic1)

**字典,代表打散,将所有键值对放到一个kwargs字典里。

def func(*args,**kwargs):
print(args)
print(kwargs)
dic1 = {'honnn':'shui','nugu':'dao'}
dic2 = {'name1':'两年半','age':33}
func(*[1,3,4,5],*'ahdhsdkj',**dic1,**dic2)

(1, 3, 4, 5, 'a', 'h', 'd', 'h', 's', 'd', 'k', 'j')
{'nugu': 'dao', 'name1': '两年半', 'honnn': 'shui', 'age': 33}

4,名称空间,也叫命名空间。放置变量与对应的值得关系(内存地址的关系)。当执行函数的时候,它会在内存中开辟一个临时名称空间,存放函数体内的所有变量与值得关系,随着函数的执行完毕,

临时空间自动关闭。

全局名称空间,名称空间,命名空间,全面命名空间。

局部命名空间,临时名称空间,临时命名空间,局部名称空间。

内置名称空间,所有的内置函数等存储的空间。

加载顺序:

内置名称空间>>>全局名称空间>>>(函数执行时)局部名称空间

取值顺序:

(函数执行时)局部名称空间>>>全局名称空间>>>内置名称空间

name = '老男孩'
def func1():
name ='taibai'
print(name)
func1()#taibai
name = '老男孩'
def func1():
# name ='taibai'
print(name)
func1()#老男孩

全局作用域:全局名称空间,内置名称空间。

局部作用域:局部名称空间。

5,函数的嵌套

print(111)#
def func1():
print(333)#
func2()
print(777)#
def func2():
print(444)#
def func3():
print(555)
func2()
func1()
print(222)#
print(111)#
def func1():
print(333)#
func2()
print(444)#
def func2():
print(222)#
func3()
print(555)#
def func3():
print(666)#
func1()
print(777)#

6,globals和locals

a = 2
b = 3
def func1():
c = 4
d = 5
print(globals())#将全局变量放在字典中
return locals()#将局部变量放在字典中{'c': 4, 'd': 5}
print(func1())

{'a': 2, '__cached__': None, '__file__': 'D:/python3/day11/xuxi329.py', '__name__': '__main__', '__doc__': None, '__builtins__': <module 'builtins' (built-in)>, 'b': 3, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x000001EE02A95780>, 'func1': <function func1 at 0x000001EE026CA048>, '__spec__': None, '__package__': None}

a = 4
def func1():
b = 6
def func2():
nonlocal b#nonlocal不能修改全局变量
b = 666
print(b)
func2()
print(b)
func1()

global:

1,在局部空间内,声明一个全局变量。

2,在局部空间内,改变一个全局变量。

globals,全局名称空间:所有变量。

locals,局部名称空间:所有变量。

nonlocal:

  1,不能修改全局变量。

  2,在局部作用域中,对父级作用域(或者更外层作用域非全局作用域)的变量进行引用和修改,并且引用的哪层,从那层及以下此变量全部发生改变。

python 的基础 学习 12天,函数的更多相关文章

  1. Python入门基础学习 三

    Python入门基础学习 三 数据类型 Python区分整型和浮点型依靠的是小数点,有小数点就是浮点型. e记法:e就是10的意思,是一种科学的计数法,15000=1.5e4 布尔类型是一种特殊的整形 ...

  2. Python入门基础学习 二

    Python入门基础学习 二 猜数字小游戏进阶版 修改建议: 猜错的时候程序可以给出提示,告诉用户猜测的数字偏大还是偏小: 没运行一次程序只能猜测一次,应该提供多次机会给用户猜测: 每次运行程序,答案 ...

  3. Python入门基础学习 一

    Python入门基础学习 一 Python下载及安装 下载地址:https://www.python.org/,选择最新的版本下载 稍等一会,安装完成. 简单语句 从idle启动Python:IDLE ...

  4. Python入门基础学习(函数)

    Python基础学习笔记(三) 函数的概念: 所谓函数,就是把具有独立功能的代码块组织为一个小模块,在需要的时候调用 函数的使用包含两个步骤: 1.定义函数 --封装独立的功能 2.调用函数 --享受 ...

  5. Python入门基础学习(列表/元组/字典/集合)

    Python基础学习笔记(二) 列表list---[ ](打了激素的数组,可以放入混合类型) list1 = [1,2,'请多指教',0.5] 公共的功能: len(list1) #/获取元素 lis ...

  6. Python入门基础学习(文件与异常处理)

    Python基础学习笔记(七) 捕获异常的语法格式: 文件的基本操作: 打开文件 读.写文件 关闭文件 read方法 --读取文件: open函数的第一个参数是要打开的文件名(文件名区分大小写) 如果 ...

  7. Python入门基础学习(时间模块,随机模块)

    Python基础学习笔记(六) time模块: 时间的三种表示方法: 1.格式化字符串 2.时间戳 用来表示和1970年的时间间隔,单位为s 3.元组 struct_time 9个元素 time的st ...

  8. Python入门基础学习(模块,包)

    Python基础学习笔记(五) 模块的概念:模块是python程序架构的一个核心概念 每个以拓展名py结尾的python源代码文件都是一个模块 模块名同样也是一个标识符,需要符合标识符的命名规则 在模 ...

  9. Python入门基础学习(面向对象)

    Python基础学习笔记(四) 面向对象的三个基本特征: 封装:把客观事物抽象并封装成对象,即将属性,方法和事件等集合在一个整体内 继承:允许使用现有类的功能并在无须重新改写原来的类情况下,对这些功能 ...

随机推荐

  1. 用javascript来实现前端简单路由

    WEB开发中路由概念并不陌生,我们接触到的有前端路由和后端路由.后端路由在很多框架中是一个重要的模块,如Thinkphp,Wordpress中都应用了路由功能,它能够让请求的url地址变得更简洁.同样 ...

  2. DAY1初识Python----变量及命名规则,注释,数据类型,常量,交互

     1.认识和了解python  python是一门解释型语言,弱类型语言 2.python发展史   2008年 2.X,3.X 3.第一个python程序  python语句可以写在命令行中,进行编 ...

  3. layer.open窗口自适应问题

    宽高度 area : ['100%', '100%']同时取消layer.full(index)就能自适应

  4. Codeforce 867 C. Ordering Pizza (思维题)

    C. Ordering Pizza It's another Start[c]up finals, and that means there is pizza to order for the ons ...

  5. (最小生成树) codeVs 1231 最优布线问题

    题目描述 Description 学校需要将n台计算机连接起来,不同的2台计算机之间的连接费用可能是不同的.为了节省费用,我们考虑采用间接数据传输结束,就是一台计算机可以间接地通过其他计算机实现和另外 ...

  6. 加了synchronized后还是不安全的问题

    1.查看是不是多线程 2.用的是不是同一个锁

  7. Hadoop ha CDH5.15.1-hadoop集群启动后,集群容量不正确,莫慌,这是正常的表现!

    Hadoop ha CDH5.15.1-hadoop集群启动后,集群容量不正确,莫慌,这是正常的表现! 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.集群启动顺序 1>. ...

  8. CentOS7 图形化方式安装 Oracle 18c 单实例

    下载 Oracle 数据库,zip 包 https://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.h ...

  9. vim 快捷键绑定

    1. 退出VIM,在shell下编译&&运行程序 :wq [root@fsjohnhuang ~]# gcc main.c -o main [root@fsjohnhuang ~]# ...

  10. axis 入门【原】

    Call call = (Call) service.createCall();call.setOperationName(new QName("命名空间地址", "方法 ...