PythonDay10
第十章函数进阶
今日内容
函数的参数 动态参数
动态接收位置参数
动态接收关键字参数
函数的注释
名称空间
函数的嵌套
global、nonlocal
global的宗旨
nonlocal宗旨
1.函数的参数 动态参数
动态接收位置参数:
# 动态位置参数
# def eat(*args): # 函数的定义阶段 *聚合(打包)
# print(args) # tuple
# print(*args) # 函数体中的*表示打散(解包)
def eat(*args):
pirnt('我想吃',args) eat('大米饭', '米饭', '饭')
# 收到的结果是一个tuple元组
动态接收参数的时候:动态参数必须在位置参数后面
无论是否给*args值,它都是一个元组(),若不给值,就是()
def eat(a, b,*args):
print("我想吃",args,a,b)
eat('大米饭','米饭','饭')
# 我想吃 ('饭',) 大米饭 米饭
# 默认参数放在最后边,通过关键字传参
def eat(a,b,*args,c='白菜'):
print('我想吃',a,b,args,c)
eat('猪肉','粉条','豆腐','大葱')
结果:
我想吃 猪肉 粉条 ('豆腐', '大葱') 白菜
注意: 形参的顺序: 位置参数 , 动态参数 , 默认参数
动态接收关键字参数:
def func(*args,**kwargs):
print(args,kwargs)
lst = [1,23,5]
dic = {'k1':4, 'k2':5}
func(*lst,**kwargs)
func(1,23,5,k1=4,k2=5)
最终顺序:
位置参数 > *args(动态位置参数) > 默认值参数 > **kwargs(动态默认参数)
总结
# 总结:
# *args(聚合位置参数) 大家伙都用的名字, 可以进行修改但是不建议修改
# **kwargs(聚合关键字参数) 大家伙都用的名字, 可以进行修改但是不建议修改
# 函数的定义阶段 * 和 ** 都是聚合
# 函数体中 * 就是打散, *args将元组中的元组进行打散 *kwargs将字典的键获取
# 实参和函数体:
# * 打散
# ** 实参时能够使用
2.函数的注释
def func(a, b):
"""
计算两数相加
:param a:
:param b:
:return: a + b
"""
return a + b
func(1, 10)
# print(a.__doc__)
# print(b.__doc__) # 查看函数的注释
# print(a.__name__) # 查看函数的名字
3.名称空间
内置空间:Python解释器自带的空间
全局空间:py文件中顶格写的就是全局空间
局部空间:函数中就是局部空间
取值顺序:
# 1.局部空间
# 2.全局空间
# 3.内置空间加载顺序:
# 1.内置空间
# 2.全局空间
# 3.局部空间
4.函数的嵌套
不管在什么位置,只要是函数名()就是在调用一个函数
5.global、nonlocal
global : 只修改全局,如果全局没有就创建一个全局变量
nonlocal : 只修改局部,修改离nonlocal最近的一层,上一层没有继续向上上层查找.只限在局部
a = 10
def func():
global a # 声明之后,就可以对全局变量进行修改
a += 1
print(a)
func() # nonlocal只能修改离nonlocal最近的一层,且不包括全局变量,如果没有就报错
def run():
a = 19
def func():
print('123')
def fun():
nonlocal a
a = 10
print(a)
fun()
run()
PythonDay10的更多相关文章
- Python--day10(函数(使用、分类、返回值))
1. 函数 1. 函数: 完成特定功能的代码块,作为一个整体,对其进行特定的命名,该名字就代表这函数 现实中:很多问题要通过一些工具进行处理 => 可以将工具提前生产出来并命名 =>通 ...
- 路飞学城Python-Day10(practise)
作业:现要求你写一个简单的员工信息增删该查程序,需求如下:当然此表在文件存储时可以这样表示1,Alex Li,22,13651054608,IT,2013-04-012,Jack Wang,28,13 ...
- 路飞学城Python-Day10
[37.函数-命名空间]命名空间又称为name space,顾名思义就是存放名字的地方,存什么名字呢?举例说明,若变量 x = 1,存放于内存中,那名字x存放在哪里呢?名称空间正式存放名字x和1绑定关 ...
- python-day10(正式学习)
目录 字符编码 计算机基础 文本编辑器存取文件的原理 python解释器执行py文件的原理 python解释器与文本编辑的异同 字符编码介绍 字符编码的分类 乱码分析 总结 文件操作 三种基本操作 文 ...
- 初学Python-day10 函数2
函数 1.函数也是一种数据 函数也是一种数据,可以使用变量保存 回调函数(参数的值还是一个函数) 实例: def test(): print('hello world') def test1(a): ...
随机推荐
- 如何安装 Angular CLI 并且检查 CLI 的版本
想在系统中安装 Angular CLI ,如何进行安装并且如何检查 CLI 的版本? 可以使用命令: npm install -g @angular/cli 进行安装. 使用命令 ng version ...
- Vue成员与指令介绍
一.Vue介绍 1.什么是vue 通过对框架的了解与运用程度,来决定其在整个项目中的应用范围, 可以独立完成前后端分离式web项目的渐进式JavaScript框架 2.为什么要学vue 三大主流框架之 ...
- phpstorm 设置ftp自动保存服务器 (原)
打开PHPstorm,依次 tools - deployment -- configuration 配置ftp或者sftp地址用户名密码等 端口号 要不就是 21 要不就是 22 , 22不行 ...
- JavaWeb_(SSH论坛)_二、框架整合
基于SSH框架的小型论坛项目 一.项目入门 传送门 二.框架整合 传送门 三.用户模块 传送门 四.页面显示 传送门 五.帖子模块 传送门 六.点赞模块 传送门 七.辅助模块 传送门 导入Jar包 导 ...
- Android_(游戏)打飞机01:前言
(游戏)打飞机01:前言 传送门 (游戏)打飞机02:游戏背景滚动 传送门 (游戏)打飞机03:控制玩家飞机 传送门 (游戏)打飞机04:绘画敌机.添加子弹 传送门 (游戏)打飞机05:处理子弹, ...
- Java 8 - Stream Collectors分组的例子
1.分组依据,计数和排序 1.1按a分组List并显示它的总数. package com.mkyong.java8; import java.util.Arrays; import java.util ...
- 两个html之间进行传值,如何进行?
function turnto(){ var getval=document.getElementById("text").value; turngetval=escape(get ...
- 数据库 mysql 操作
安装好xammp,打开阿帕奇和数据库服务: 点击右侧 shell 按钮,进入命令行: 首先,利用超级管理员权限进入数据库: mysql -uroot -p enter,再enter 把下述代码复制进命 ...
- 七、smarty--缓存的控制
1.建议缓存 $smarty->cacheing = true; //设置为2是给每一个模板设置缓存 $smarty->setCacheDir(“”); 2.处理缓存的生命周期 $smar ...
- Qt编写大数据大屏UI电子看板系统
前言 目前大屏大数据可视化UI这块非常火,趁热也用Qt来实现一个,Qt这个一站式超大型GUI超市,没有什么他做不了的,大屏电子看板当然也不在话下,有了QSS和QPainter这两个无敌的工具组合,借用 ...