初学python-day11 函数3
函数
1. global关键字
修改全局变量,声明函数内外使用同一个变量
示例:
1 name = 'xiaoming'
2
3 def test():
4 global name
5 name = 'hello'
6
7 test()
8 print(name)
9
10
11 运行结果:
12 hello
2.nonlocal关键字(只能在函数嵌套时使用)
声明函数内部使用同一个变量
name = 'xm'
def test():
name = 'xh'
def inner():
nonlocal name
name = 'laowang'
print('inner-->', name)
inner()
print('test-->', name) test()
print('glocal-->', name) 运行结果: inner--> laowang
test--> laowang
glocal--> xm Process finished with exit code 0
3.值传递与引用传递
前提:可变类型与不可变类型
不可变类型:类似C++的值传递,比如整数、元组等;传递的是变量的值,不会影响变量本身。
可变类型:类似C++的引用传递,如列表、字典等;将内存地址传递过去,将值进行修改,本身也会发生改变。
--值传递
在函数内部如果修改了函数外部的变量,那么在内部创建了一个同名的新的变量和函数外部的是没关系的。
num = 1
def changeNum();
num =2
print(num) changeNum()
print(num)
--引用传递
可变类型在函数内部进行了修改,那么在外部的变量也会发生改变。
def changDic(kwarg):
print(kwarg) # 第三步
kwarg['sex'] = 'man' # 第四步
print(kwarg) # 第五步 dic = {'name':'xm', 'age':18} # 第一步
changDic(dic) # 第二步
print(dic) # 第六步
初学python-day11 函数3的更多相关文章
- Python——day11 函数(对象、名称空间、作用域、嵌套、闭包)
一.函数对象 函数名就是存放了函数的内存地址,存放了内存地址的变量都是对象,即 函数名 就是 函数对象 函数对象的应用 1. 可以直接被引用 fn = cp_fn 2 .可以当作函数参数传递 c ...
- python day11 函数(第三篇)
2019.4.11 S21 day11笔记总结 1. 函数小高级 ( 5* ) 1 函数名可以当作变量来使用 def func(): print(123) v1 = func # func代表函数的地 ...
- 跟着太白老师学python day11 函数名的应用 globals(), locals()
1. 函数名就是内存地址 def func(): ') print(func) >>>> <function func at 0x00000000003DC1E0> ...
- 初学 Python(十三)——匿名函数
初学 Python(十三)--匿名函数 初学 Python,主要整理一些学习到的知识点,这次是匿名函数. # -*- coding:utf-8 -*- #关键字lambda定义的函数都是匿名函数 #做 ...
- 初学 Python(十二)——高阶函数
初学 Python(十二)--高阶函数 初学 Python,主要整理一些学习到的知识点,这次是高阶函数. #-*- coding:utf-8 -*- ''''' 话说高阶函数: 能用函数作为参数的函数 ...
- 初学Python(九)——函数
初学Python(九)--函数 初学Python,主要整理一些学习到的知识点,这次是函数. 函数定义: # -*- coding:utf-8 -*- #函数的定义 def my_function(x) ...
- Python中函数、类、模块和包的调用
初学python阶段,大多数人对函数.类.模块和包的调用都搞得不是很清楚,这篇随笔就简单的进行说明. (1)函数 当函数定义好之后,可以直接调用. 比如:def summ(add1,add2),那么 ...
- 初学 Python(十五)——装饰器
初学 Python(十五)--装饰器 初学 Python,主要整理一些学习到的知识点,这次是生成器. #-*- coding:utf-8 -*- import functools def curren ...
- 初学 Python(十四)——生成器
初学 Python(十四)--生成器 初学 Python,主要整理一些学习到的知识点,这次是生成器. # -*- coding:utf-8 -*- ''''' 生成式的作用: 减少内存占有,不用一次性 ...
- 初学python之感悟
python的强大有目共睹,现将初学python,觉得其中比较重要的知识罗列如下: 类似于数组的东西:列表.元组.集合.字符串以及字典,这几个东西充分体现了python的强大和逆天. 列表: x=[1 ...
随机推荐
- Win10 下安装Ubuntu 21.04桌面版 双系统 并设置win10为默认启动系统 详细教程
@ 目录 〇.写在前面 〇 - Plus:如何进入BIOS 〇 - Plus - Plus:U盘启动快捷键 一.磁盘分区:Win10划分未分配空间 二.下载Ubuntu 21.04镜像 三.安装U盘启 ...
- 如何在RHEL7或CentOS 7系统下修改网卡名称(亲测有效~!)
亲测有效的更改RHEL7或CentOS 7的网卡名称的方法, 按照以下4步来操作就可以实现! Step 1 :网卡配置文件名称重命名为eth0[root@localhost ~]# ifconfige ...
- TDSQL(MySQL版)之DB组件升级
随着数据库产品的更新迭代,修复bug等等,产品避免不了会出现升级的需求.TDSQL(MysqL版)也会有这方面的需求.接下来我就说说如何对现有TDSQL(MySQL版)集群组件进行升级,而不影响业务. ...
- uniapp获取用户OpenId及用户详情
页面增加一个按钮 <button type="default" open-type="getUserInfo" @click="getUserI ...
- STP(生成树)的概述和工作原理
一.STP的简介 二.STP的概述 三.STP的工作原理 四.生成树的算法 五.BPDU(桥协议数据单元) 六.STP收敛 TP简介 STP - Spanning Tree Protocol(生成树协 ...
- 328 day07线程池、Lambda表达式
day07[线程池.Lambda表达式] 主要内容 等待与唤醒案例 线程池 Lambda表达式 教学目标 -[ ] 能够理解线程通信概念 -[ ] 能够理解等待唤醒机制 -[ ] 能够描述Java中线 ...
- 使用 VSCode 开发调试 STM32 单片机尝试
使用 VSCode 开发调试 STM32 单片机尝试 本文记录基于 Windows + DAP-Link 开发 STM32F103C8T6 的实践过程,其他操作系统或芯片应该也只是大同小异的问题. 注 ...
- echsop设置伪静态
1.后台商店设置-基本设置-URL重写开启 2.修改httpd.conf文件 AllowOverride None 改为 AllowOverride AllLoadModule rewrite_mod ...
- Java基础系列(40)- Arrays类
Arrays类 数据的工具类java.util.Arrays 由于数组对象本身并没有什么方法可以供我们调用,但API中提供了一个工具类Arrays供我们使用,从而可以对数据对象进行一些基本的操作 查看 ...
- 华为云计算IE面试笔记-桌面云用户登录连接流程及故障处理?
1-10:桌面与系统验证成功 http协议 11-19:桌面list(VM列表)获取,选择 http协议 20-30: ...