iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >学习python的第十四天(可变长参数,
  • 652
分享到

学习python的第十四天(可变长参数,

变长参数第十四天 2023-01-31 00:01:04 652人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

一.可变长参数 1.可变长形参之(*) 形参中的会将溢出的位置实参全部接收,然后存储元组的形式,然后把元组赋值给后的参数。需要注意的是:*后的参数名约定俗成为args。 def sum_self(*args): res = 0

一.可变长参数

1.可变长形参之(*)

形参中的会将溢出的位置实参全部接收,然后存储元组的形式,然后把元组赋值给后的参数。需要注意的是:*后的参数名约定俗成为args。

def sum_self(*args):
    res = 0
    for num in args:
        res += num
    return res


res = sum_self(1, 2, 3, 4)
print(res)
#10

2.可变长实参之(*)

实参中的会将后参数的值循环取出,打散成位置实参。以后但凡碰到实参中带的,它就是位置实参,应该马上打散成位置实参去看。

def func(x, y, z, *args):
    print(x, y, z, args)


func(1, *(1, 2), 3, 4)
#1 1 2 (3,4)

3.可变长形参之(**)

形参中的会将溢出的关键字实参全部接收,然后存储字典的形式,然后把字典赋值给后的参数。需要注意的是:**后的参数名约定俗成为kwargs。

def func(**kwargw):
    print(kwargw)


func(a=5)
#{'a': 5}

4.可变长实参之(**)

实参中的会将后参数的值循环取出,打散成关键字实参。以后但凡碰到实参中带的,它就是关键字实参,应该马上打散成关键字实参去看。

def func(x, y, z, **kwargs):
    print(x, y, z, kwargs)
func(1, 3, 4, **{'a': 1, 'b': 2})
#1 3 4 {'a': 1, 'b': 2}

5.可变长参数应用

def index(name, age, sex):
    print(f"name: {name}, age: {age}, sex: {sex}")


def wrapper(*args, **kwargs):
    print(f"args: {args}")
    print(f"kwargs: {kwargs}")
    index(*args, **kwargs)


wrapper(name='nick', sex='male', age=19)

'''
args: ()
kwargs: {'name': 'nick', 'sex': 'male', 'age': 19}
name: nick, age: 19, sex: male
'''

二.关于函数的嵌套

最好返回值为函数名,不要是函数调用

#第一种
def f1():
    def f2():
        print('asdad')
    return f2
f2 = f1()
f2()
#第二种
def f1():
    def f2():
        print('asdad')
    return f2()
f1()

#最好用第一种方法运行,第二种运行可能会造成一些不必要的麻烦

函数内部的函数只能在函数内部调用,不能在函数外部调用

def f1():
    def f2():
        print('asdad')

f2() 会报错 ,f2没有定义

三.名称空间

1.内置名称空间

名称空间(name spaces):在内存管理那一章节时,我们曾说到变量的创建其实就是在内存中开辟了一个新的空间。但是我们一直在回避变量名的存储,其实在内存中有一块内存存储变量名与变量间的绑定关系的空间,而这个空间称为名称空间。

生命周期:在python启动时候,Python关闭时候

2.全局名称空间

全局名称空间:除了内置和局部的名字之外,其余都存放在全局名称空间.

生命周期:在文件执行时生效,在文件执行结束后失效

3.局部名称空间

局部名称空间:用于存放函数调用期间函数体产生的名字.`

生命周期:在文件执行时函数调用期间时生效,在函数执行结束后失效

如:

x = 1                    # 其中X,f1为全局名称空间,print为内置名称空间,f2为局部名称空间

print(x) 

def f1():
    def f2():
        print('from f2')
    f2()

f1() 

关于三种名称空间的加载顺序:

内置名称空间→全局名称空间→局部名称空间

名称空间的查找顺序

x=1
def f1():
    def f2():
        x = 3 
        print(x)
    f2()
x=3
f1()
print(x)

关于查找:

如果查找的起点在局部名称空间内,他会先在局部空间他的位置开始自之下而上开始寻找,如果在局部空间内找不到,再去全局名称空间开始寻找如果还没找打他会去去内置名称空间寻找他不会去另外的局部空间进行查找

如果起点在全局名称空间,他不会去局部空间开始查找,他会去全局开始寻找,如果全局没找到他会去内置名称空间寻找.

四.关键字

1..global关键字

修改全局作用域中的变量。

x = 1


def f1():
    x = 2

    def f2():
        global x  # 修改全局
        x = 3
    f2()


f1()
print(x)
#3

2.nonlocal关键字

修改局部作用域中的变量。

x = 1


def f1():
    x = 2

    def f2():
        nonlocal x
        x = 3

    f2()
    print(x)


f1()

3.注意点

1,两个关键字必写在须在局部名称空间变量名第一次出现的上面
2.在局部想要修改全局的可变类型,不需要任何声明,可以直接修改。
3.在局部如果想要修改全局的不可变类型,需要借助global声明,声明为全局的变量,即可直接修改。

--结束END--

本文标题: 学习python的第十四天(可变长参数,

本文链接: https://www.lsjlt.com/news/182516.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 学习python的第十四天(可变长参数,
    一.可变长参数 1.可变长形参之(*) 形参中的会将溢出的位置实参全部接收,然后存储元组的形式,然后把元组赋值给后的参数。需要注意的是:*后的参数名约定俗成为args。 def sum_self(*args): res = 0 ...
    99+
    2023-01-31
    变长 参数 第十四天
  • 我的python学习--第十四天(一)
    一、运维管理系统(基于Flask)回顾1、权限控制  通过session实现权限控制,session是一个全局字典,当用户登录时,可以获取到用户的用户名,通过查找数据库获取用户的权限保存进session中,在每次页面跳转时同过查询sessi...
    99+
    2023-01-31
    第十四天 python
  • python 学习第四天
    目录 基本运算符 算术运算符 比较运算符 赋值运算符 逻辑运算符 身份运算符 pyth...
    99+
    2023-01-31
    第四天 python
  • 我的python学习--第四天
    一、首先是对前三天的学习内容进行复习  1、python基础的数据结构      数字(int/float,包括整数和浮点数)          布尔(boolean => True/False)      字符串(str,使用''或...
    99+
    2023-01-31
    第四天 python
  • 学习python的第四天(python的
    一.Jupyter的安装以及运行 1.Jupyter的安装 运行CMD,在CMD中输入pip3 --default-timeout=100 install -U jupyter 再输入pip3 install jupyter_contr...
    99+
    2023-01-31
    第四天 python
  • 学习python的第二十天(dateti
    1.datetime模块(用于修改日期) import datetime print(datetime.datetime.now(),type(datetime.datetime.now())) 2019-06-10 19:37:55....
    99+
    2023-01-31
    十天 python dateti
  • 我的python学习--第十三天
    nginx + uwsgi + flask一、安装1、安装uwsgi[root@yaoliang day_13]# wget http://projects.unbit.it/downloads/uwsgi-2.0.4.tar.gz [ro...
    99+
    2023-01-31
    第十三天 python
  • 我的python学习--第十一天
    上午:作业讲解bootstrap-multiselect插件sweetalert插件下午:datatables----表格插件datetimepicker----时间插件Validform----表单验证插件锁定用户禁止登录---...
    99+
    2023-01-31
    第十一天 python
  • 学习python的第二十一天(hashl
    1.hashlib模块(文件传输中将传输内容用指定算法进行处理) hash是一种算法(Python3.版本里使用hashlib模块代替了md5模块和sha模块,主要提供 SHA1、SHA224、SHA256、SHA384、SHA512、...
    99+
    2023-01-31
    python hashl
  • 学习python的第二十一天(loggi
    1.logging模块 用于程序的运行日志 1.初级 #首先程序运行分会出现5中情况 1.logging.info('info') #程序正常运行级别为10 2.logging.debug('debug') #程序调试...
    99+
    2023-01-31
    python loggi
  • 我的python学习--第十二天(二)
    Python异常处理  Python的异常处理能力是很强大的,可向用户准确反馈出错信息。在Python中,异常也是对象,可对它进行操作。所有异常都是基类Exception的成员,所有异常都从基类Exception继承,而且都在excepti...
    99+
    2023-01-31
    二天 python
  • JDK5.0新特性的学习--可变长参数
    有时候,我们传入到方法的参数的个数是不固定的,为了解决这个问题,我们一般采用下面的方法:1. 重载,多重载几个方法,尽可能的满足参数的个数。显然这不是什么好办法。2. 将参数作为一个数组传入。虽然这样我们只需一个方法即可,但是,为了传递...
    99+
    2023-06-03
  • 学习python的第三天(变量)
    一.关于python 1.交互式 说一句解释一句 2.命令行式 1.编写文件并且保存 2.打开python解释器,在pyrhon中打开文本,读入内存(python打开的时候,翻译不是瞬间) 3.python解释文本 注意:第二阶段相当于...
    99+
    2023-01-31
    变量 python
  • 学习python的第二十天(json模块
    1.josn模块(用于指定数据类型文件快速读写修改) 1.指定的数据类型 dict(字典) str(字符串) int/float(整型/浮点型) bool中的False,True,None 2.dumps/loads loads 用于内...
    99+
    2023-01-31
    十天 模块 python
  • 学习python的第二十天(time模块
    1.三种时间的显示样式 1.时间戳 1.相关函数 1.time() 2.显示样式 import time print(time.time()) #1560150343.5837357 距离计算机元年1970年1月1日00:00:0的过...
    99+
    2023-01-31
    十天 模块 python
  • 学习python的第十五天(函数的装饰器
    一.装饰器 1.函数装饰圈的定义 函数装饰器:一种装饰函数的函数 2.个人理解两层函数装饰器 两层函数装饰器个人觉得他其实就是把需要装饰的函数名丢入形参,然后用一个嵌套的函数对其头尾进行添加程序,但是不能减少他的程序内容,他的原来程序不...
    99+
    2023-01-31
    函数 python
  • 学习python的第十一天(集合数据类型
    1.集合数据类型 1.定义 用{}中间值用,隔开,且集合中元素排列是无序的,而且如果有相同元素会只保留一个 2.算法 1.必须掌握 1.长度len set_1 = {1,2,3,4,5} print(len(set_1)) #5 2.成...
    99+
    2023-01-31
    数据类型 第十一天 python
  • 学习python的第十二天(编码,解码,
    1.编码解码 1.字符串编码 字符 --------》翻译过程 -------》数字 2.字符串解码 字符 --------》翻译过程 -------》数字 3.编码解码用到的翻译工具 中国:GBK 外国:日本—Shift_JIS,美国...
    99+
    2023-01-31
    二天 python
  • 学习python的第二十天(os模块,s
    1.os模块(功能类似操作系统与文件交互) 1.常用模块功能 1.创建文件 1.mkdir 2.移除文件 1.remove 删除指定文件 2.rmdir 删除单级空目录,若目录不为空则无法删除 3.removedirs 若目录为空,则删...
    99+
    2023-01-31
    十天 模块 python
  • 学习python的第十九天(包,软件开发
    1.包 1.什么是包 包是模块的一种形式,包的本质就是一个含有__init__.py的文件的文件夹 2.为什么用包 当一个模块功能太多的时候不方便进行管理,我们用包来进行管理 3.包的使用 1.导入包发生的三件事 创建一个包的名称空间...
    99+
    2023-01-31
    软件 python
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作