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. appium desktop 1.7 byName不能用,重写

    @Override public WebElement findElementByName(String name){ String string="new UiSelector().tex ...

  2. Js封装的动画函数实现轮播图

    ---恢复内容开始--- 效果图说明:当鼠标移到哪一个按钮上的时候会自动跳转到某一张图片上,并且按钮会以高亮显示 项目目录结构 用到的js封装的animate()动画         function ...

  3. 剑指Offer_编程题_18

    题目描述 操作给定的二叉树,将其变换为源二叉树的镜像. 输入描述: 二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ ...

  4. Java NIO系列教程(八)JDK AIO编程

    目录: Reactor(反应堆)和Proactor(前摄器) <I/O模型之三:两种高性能 I/O 设计模式 Reactor 和 Proactor> <[转]第8章 前摄器(Proa ...

  5. JAVA核心技术I---JAVA基础知识(多态)

    一:类转型 类转型:子类可以转父类,父类不可以转子类(除非父类对象本身就是子类) 1.父类 public class Human { public void say() { System.out.pr ...

  6. 3.建造者模式(Builder)

    Builder模式的缘起:    假设创建游戏中的一个房屋House设施,该房屋的构建由几部分组成,且各个部分富于变化.如果使用最直观的设计方法,每一个房屋部分的变化,都将导致房屋构建的重新修正... ...

  7. Kafka技术内幕 读书笔记之(五) 协调者——消费者加入消费组

    消费者客户端轮询的3个步骤:发送拉取请求,客户端轮询,获取拉取结果 . 消费者在发送拉取请求之前,必须首先满足下面的两个条件.- 确保消费者已经连接协调者, 即找到服务端中管理这个消费者的协调者节点 ...

  8. 人工神经网络入门(4) —— AFORGE.NET简介

    范例程序下载:http://files.cnblogs.com/gpcuster/ANN3.rar如果您有疑问,可以先参考 FAQ 如果您未找到满意的答案,可以在下面留言:) 0 目录人工神经网络入门 ...

  9. 基于Asp.net C#实现HTML转图片(网页快照)

    一.实现方法 //WebSiteThumbnail.cs文件,在BS项目中需要添加对System.Windows.Forms的引用 using System; using System.Data; u ...

  10. [时序图笔记] 步步为营UML建模系列五、时序图(Squence diagram)【转】

    概述 顺序图是一种详细表示对象之间以及对象与参与者实例之间交互的图,它由一组协作的对象(或参与者实例)以及它们之间可发送的消息组成,它强调消息之间的顺序. 顺序图是一种详细表示对象之间以及对象与系统外 ...