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. Java并发编程-阻塞队列(BlockingQueue)的实现原理

    背景:总结JUC下面的阻塞队列的实现,很方便写生产者消费者模式. 常用操作方法 常用的实现类 ArrayBlockingQueue DelayQueue LinkedBlockingQueue Pri ...

  2. c 结构体 & 函数指针模拟实现一个java class(类) 和方法

    闲来无事,纯粹练习. student.h #ifndef STUDENT_H_INCLUDED #define STUDENT_H_INCLUDED #include <memory.h> ...

  3. zlib库交叉编译

    zlib-1.2.11 开发板:arm9 交叉编译器arm-fsl-linux-gnueabihf-gcc 编译方式: ./configure -h可以发现zlib并没有提供CC配置,所以 (1)ex ...

  4. 面试遇到两个稍显变态的题目,mark一下

    一. 答案: 二. 这个实际上就是删掉了最大的元素之后,再找一次max,于是就是第二大的元素了. 我也这么想过,但是我基础不好,忘了有max方法,于是就想着两次遍历,但是就不符合题意了 图中的答案甚好 ...

  5. (链表) 83. Remove Duplicates from Sorted List

    Given a sorted linked list, delete all duplicates such that each element appear only once. Example 1 ...

  6. vue(基础二)_组件,过滤器,具名插槽

    一.前言 主要包括:  1.组件(全局组件和局部组件)                     2.父组件和子组件之间的通信(单层)                     3.插槽和具名插槽     ...

  7. Shiro进行简单的身份验证(二)

    一个Realm数据源: shiro.ini: [users] wp=123456 main方法执行认证: package com.wp.shiro; import org.apache.shiro.S ...

  8. hibernate的学习周

    Hibernate核心:ORM(对象关系映射) BeginSession关闭的时候要session.close(),而getCurrentsession不需要,它会自动关闭 Session.load( ...

  9. python3.x 和pip3的安装

    python3.x 和pip3的安装 本人在学习python3的时候,视频中使用的是python3,在讲解到有些第三方库的时候,无法使用到pip3 install来安装所需的库.由于系统是centos ...

  10. python中字符编码及unicode和utf-8区别

    ascii和unicode是字符集,utf-8是编码集 字符集:为每一个「字符」分配一个唯一的 ID(学名为码位 / 码点 / Code Point) 编码规则:将「码位」转换为字节序列的规则(编码/ ...