函数

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) # 第六步

最新文章

  1. 【转】How to hire——创业公司应该如何招人
  2. memcached服务器
  3. XML序列化与反序列化
  4. 数据结构2 静态区间第K大/第K小
  5. AWS EC2的VPN-PPTP搭建教程(on aws redhat6.5 X64 centOS 6.5)
  6. Mac or Centos 下如何编译objective-C
  7. 【整理修订】Android.mk详解
  8. vs2015中ctrl+shift+F进行“在文件中查找”,有时候无效?
  9. JAVA基础---编码解码
  10. C# - 什么是事件绑定?
  11. python爬虫从入门到放弃(九)之 Requests+正则表达式爬取猫眼电影TOP100
  12. Java实现Windows、Mouse监听器
  13. 第二章 函数和window对象
  14. Java知多少(40)接口和抽象类的区别
  15. 【转】比较init-method,afterPropertiesSet和BeanPostProcessor
  16. linux command curl and sha256sum implement download verification package
  17. oracle之 获取建表ddl语句
  18. 2018.09.16 bzoj3757: 苹果树(树上莫队)
  19. uva-1636-概率
  20. js的window对象

热门文章

  1. DNS重新绑定攻击
  2. PyPDF2.py 合并pdf时报错问题
  3. vue post 请求 是 request payload 而不是 FromData ,以及 格式转换成 FromData 需要的 key value 格式
  4. MPI集群搭建
  5. 通俗易懂讲解Word2vec的本质
  6. 区间DP的瞎扯淡
  7. python3 爬虫五大模块之五:信息采集器
  8. docker学习笔记(一)--ubunru18.04下面安装docker18.03
  9. PHP怎么遍历对象?
  10. CentOS Linux 简单安装 clickhouse