day09,10 函数
一、函数
- 什么是函数
函数: 对代码块和功能的封装和定义
定义一个事情或者功能. 等到需要的时候直接去用就好了. 那么这里定义的东西就是一个函数.
语法:
def 函数名(形参):
函数体
函数名(实参)
- 函数定义, 函数名, 函数体以及函数的调⽤
函数的调用: 使用函数名可以调用函数, 写法: 函数名(), 这个时候函数的函数体会被执行
- 函数的返回值
函数中遇到return, 此函数结束, 不再继续执⾏
1. 函数内部不写return, 默认在最后返回None
2. 函数只写了return 返回None
3. 给函数的调用者一个访问结果 return 值 有一个返回值
4. 函数的返回值可以有多个结果 return 值1, 值2, 值3 .... 有多个返回值
返回值返回给调用方!!!
- 函数的参数
关于参数:
1. 形参
写在函数声明的位置的变量叫形参. 形式上的⼀个完整. 表⽰这个函数需要xxx
2. 实参
在函数调⽤的时候给函数传递的值. 叫实参, 实际执⾏的时候给函数传递的信息. 表⽰给函数xxx
3. 传参
给函数传递信息的时候将实际参数交给形式参数的过程被称为传参.
函数的参数
形参: 在函数声明位置的变量
1. 位置参数
2. 默认值参数
3. 混合-顺序: 位置, 默认值 必须先声明位置参数, 才能声明默认值参数.
4. 动态传参, *args, **kwargs 动态参数必须在位置参数后⾯
1 *args: 动态接收位置参数
2 **kwargs:动态接收关键字参数
顺序: 位置, *args, 默认值, **kwargs
*, ** :
def func(*args, **kwargs): 无敌传参
pass
*, ** : 在形参位置: 聚合
在实参位置: 打散
在实参位置上给一个序列,列表,可迭代对象前面加个*表示把这个序列按顺序打散.
在形参的位置上的* 表⽰把接收到的参数组合成⼀个元组
如果是一个字典, 那么也可以打散. 不过需要⽤两个*
实参: 在函数调用的时候给函数传递的具体的值
1. 位置参数
2. 关键字参数
3. 混合(注意: 在使⽤用混合参数的时候, 关键字参数必须在位置参数后面)
顺序: 位置, 关键字
二、命名空间
给存放名字和值的关系的空间起⼀个名字叫: 命名空间. 我们的变量在存储的时候就是存储在这片空间中的.
1. 内置名称空间:python自己, print, input, len
2. 全局名称空间: 你写的代码从上到下
3. 局部名称空间: 函数, 类, 方法, 其他模块, 对象
作用域
全局作用域
内置 + 全局
局部作用域
局部名称空间
从局部找全局可以. 但是从全局找局部是不可以的
通过globals()函数来查看全局作⽤域中的内容, 也可以通过locals()来查看局部(或当前)作用域中的变量和函数信息
三、函数嵌套
每一层都会产生独自的名称空间
只要遇⻅了()就是函数的调⽤. 如果没有()就不是函数的调⽤
四、global和nonlocal
global: 在局部引入全局的内容, 可以创建(升华)一个变量为全局变量
nonlocal : 在局部, 引入上一层名称空间中的变量, 如果没有, 继续上一层.....若没有找到就报错
如果全局变量在局部, 可以用, 但是, 不能改
day09,10 函数的更多相关文章
- DAY09、函数
一.函数的定义:跟变量名的定义大同小异 1.声明函数的关键词:def 2.函数(变量)名:使用函数的依据 3.参数列表:() 参数个数可以为0到n个,但()一定不能丢,完成功能的必要条件 4.函数 ...
- day09 10 11 12 三天函数内容
小括号.中括号名字()函数调用符[] 索引调用符 函数的注释:官方推荐: 查看注释 :funcming.__doc__ funcming.__name__ def func(name, ag ...
- 初涉JavaScript模式 (10) : 函数 【进阶用法】
写在前面 不知不觉写到第10篇了.这篇写起来很忐忑,终于和高级搭上边了(呵呵),这篇我们 主要 说一下 JS 方法的部分高级用法(我知道的),笔者水平有限,难免有错.废话不多少,进入正文. 初始化 我 ...
- day 10函数二
今日内容 '''实参:调用函数,在括号内传入的实际值,值可以为常量.变量.表达式或三者的组合*****形参:定义函数,在括号内声明的变量名,用来接受外界传来的值''''''注:形参随着函数的调用 ...
- python note 10 函数变量
1.命名空间 #内置命名空间 —— python解释器 # 就是python解释器一启动就可以使用的名字存储在内置命名空间中 # 内置的名字在启动解释器的时候被加载进内存里#全局命名空间 —— 我们写 ...
- Day 10 函数的形参,实参
今日内容 '''实参:调用函数,在括号内传入的实际值,值可以为常量.变量.表达式或三者的组合*****形参:定义函数,在括号内声明的变量名,用来接受外界传来的值''''''注:形参随着函数的调用 ...
- day 10 函数名的运用,闭包,迭代器
函数名的本质 函数名本质上就是函数的内存地址 函数名的五种运用: 1.函数名是一个变量 def func(): print(666) print(func) # 函数的内存地址 <functio ...
- day09作业—函数进阶
# 2.写函数,接收n个数字,求这些参数数字的和.(动态传参) def func1(*args): sum = 0 for i in args: sum += i print(sum) func1(1 ...
- Python 入门基础10 --函数基础3 函数对象、名称空间、装饰器
今日内容 1.函数对象 2.名称空间与作用域 3.函数的嵌套调用与闭包 4.装饰器 一.函数对象 1.1 定义 函数名存放的就是函数地址,所以函数名也就是对象,称之为函数对象 1.2 函数对象的应用 ...
随机推荐
- 与MySQL的零距离接触
存储引擎 查看数据表的创建命令:show create table tbl_name
- (转)Linux内核基数树应用分析
Linux内核基数树应用分析 ——lvyilong316 基数树(Radix tree)可看做是以二进制位串为关键字的trie树,是一种多叉树结构,同时又类似多层索引表,每个中间节点包含指向多个节点的 ...
- git删除指定文件夹
1.在本地仓库删除指定文件 git rm 文件名名称 2.在本地仓库删除指定文件夹 git rm -r 文件夹/ 3.提交修改 git commit -m"删除文件夹" 4.推送到 ...
- 【Javascript-基础-getOwnPropertyNames】Object.getOwnPropertyNames() 获取对象自身可枚举属性
可枚举属性和不可枚举属性 在JavaScript中,对象的属性分为可枚举和不可枚举之分,它们是由属性的enumerable值决定的.可枚举性决定了这个属性能否被for-in查找遍历到. 可枚举属性 e ...
- 8. DBNEWID 工具(使用nid命令修改db name及dbid)
以下参考自:https://www.2cto.com/database/201305/207860.html Oralce官网:https://docs.oracle.com/cd/E11882_01 ...
- ThinkPHP微信扫码支付接口
最近折腾微信扫码支付,看了微信官方文档,找了很多网页,发现和文档/demo不匹配,现在自己算是弄出来了(文件名称有所更改),贴出来分享一下 一.将有用的官方lib文件和使用的相关文件放置到vendor ...
- Bulk Rename Utility 3.0 + x64 中文汉化版
Bulk Rename Utility 3.0 + x64 中文汉化版由大眼仔旭(www.dayanzai.me)汉化发布.当发现做一件事情,原本用工具或软件进行批量处理也能达到相同效果,可却花了数倍 ...
- java8时间工具类Localdate、LocaldateTime
优点: 1.方便. Date 只能是日期加时间的格式,而 LocalDate .LocalTime.LocalDateTime 分别代表日期,时间,日期+时间,非常灵活.再就是后者在日期计算及格式化方 ...
- 基于Vue实现可以拖拽的树形表格(原创)
因业务需求,需要一个树形表格,并且支持拖拽排序,任意未知插入,github搜了下,真不到合适的,大部分树形表格都没有拖拽功能,所以决定自己实现一个.这里分享一下实现过程,项目源代码请看github,插 ...
- Cloudera环境搭建
在开发阶段,可以单机搭建环境安装Flume和Solr,在两个工程的官网下载相关文件. 还有另一种更便捷的方式,就是使用Cloudera提供的镜像,包括了已经配置好的各种大数据服务环境的docker镜像 ...