定义在函数内部的变量拥有一个局部作用域,定义在函数外的拥有全局作用域. 局部变量只能在其被声明的函数内部访问,而全局变量可以在整个程序内访问. 在调用函数的时候,所有在函数内声明的变量名称都被加到作用域中:…
全局与局部变量 在函数中定义的变量称为局部变量,在程序的一开始定义的变量称为全局变量. 全局变量作用域是整个程序,局部变量作用域是定义该变量的函数. 当全局变量与局部变量同名时,在定义局部变量的函数内,局部变量起作用:在其它地方全局变量起作用. name = "Alex Li" # 全局变量 def change_name(name): print("before change:",name) # 函数内部变量从内向外找,如果内部不存在,会找上一层 # 输出 # b…
python函数 part1 函数的作用: 函数以功能(完成一件事)为导向 随调随用减少代码重复性 增强代码可读性 函数的结构: def 函数名(): 函数体 函数的返回值 return:在函数中遇到return直接结束函数 return将数据返回给函数的执行者(调用) return如果返回多个元素是以元组的形式返回给函数的执行者(ret1,ret2,ret3=meet()#元组的拆包) 函数的传参:(实参/形参) A:实参角度: 1.位置参数:从左到右,一一对应 2.关键字参数一一对应meet…
#!/usr/bin/env python # -*- coding:utf-8 -*- #Author:ersa """ 全局与局部变量 在子程序中定义的变量称为局部变量,在程序的一开始定义的变量称为全局变量. 全局变量作用域是整个程序,局部变量作用域是定义该变量的子程序. 当全局变量与局部变量同名时: 在定义局部变量的子程序内,局部变量起作用:在其它地方全局变量起作用. """ school = "tsinghua" #全…
1.函数内部的变量名如果第一次出现,且出现在=前面,即被视为定义一个局部变量,不管全局域中有没有用到该变量名,函数中使用的将是局部变量,例如: num = 100 def func(): num = 123 print(num) func() 输出: 123 说明函数中定义的num是一个局部变量,会将全局变量覆盖.再例如: num = 100 def func(): num += 100 print(num) func() 输出: UnboundLocalError: local variabl…
python 函数中如果需要使用全局变量,需要使用 global + 变量名 进行声明, 如果不声明,那么就是重新定义一个局部变量,并不会改变全局变量的值 n [1]: a = 3 In [2]: def func1(): ...: a = 4 ...: print(a) ...: In [3]: In [3]: func1() 4 In [4]: print(a) 3 使用global进行声明操作的是全局变量 In [12]: a = 3 In [13]: def func(): ...: g…
python函数: 默认参数: retries= 这种形式 def ask_ok(prompt, retries=, complaint='Yes or no, please!'): while True: ok = raw_input(prompt) if ok in ('y', 'ye', 'yes'): return True if ok in ('n', 'no', 'nop', 'nope'): return False retries = retries - : raise IOEr…
1.    定义函数 def   函数名(形参): 函数体 return  xxx--------其下面的内容不再执行 --------------------------------------------------------------------------------------------------------------- 2.执行函数 函数名(实参) ---------------------------------------------------------------…
全局变量与局部变量:在函数外部或内部定义的变量 1. 函数内部的变量名首次出现,且在=号左边 不管这个变量在全局域中有没有定义该变量名,都被视为一个局部变量 例1: >>>num=100 #全局变量 >>>def func(): num=123 #就算在全局域定义了,此时num也属于局部变量 print(num) >>>func() 123 2. 函数内部的变量名首次出现,且在=号右边 如果该变量在全局域中定义了,则开始使用全局变量 如果全局域中未定义…
python在引用变量的时候尤其要注意变量的作用域,在函数里引用不可变类型变量的时候,函数执行结束后是不会改变全局变量的值的:若想在函数里改变不可变类型全局变量的值时,引用的时候要用”global arg":对于可变变量,函数执行结束后全局变量的值是回被改变的,如下:(说明一下,python不可变数据类型:string,int ,tuple 常量:可变数据类型:dict list) 1 在函数里引用不可变类型的全局变量: 可见,func1执行完后全局变量arg的值仍是1:在函数内部改变全局变量的…
Python函数的关键字参数 Python函数独立星号(*)分隔的命名关键字参数 Python函数中的位置参数 Python中对输入的可迭代对象元素排序的sorted函数 Python中函数的参数带星号是什么意思? Python中函数是否能使用全局变量? Python中sorted(iterable, , key=None, reverse=False)函数参数定义中的独立星号()的含义 Python中sorted(iterable, /, *, key=None, reverse=False)…
函数1 (1)定义: def 函数名(参数列表) 函数体 (2)参数传递: 在python中,一切都是对象,类型也属于对象,变量是没有类型的. a = [1,2,3] a = "helloworld" 以上代码中,[1,2,3]是list类型,"helloworld"是string类型,而变量a是没有类型的,它仅仅是一个对象的引用(一个指针),可以是指向list类型对象,也可以指向string类型对象. 可更改(mutable)和不可更改(immutable)对象:…
装饰器 装饰器的本质是一个python函数,它的作用是在不对原函数做任何修改的同时,给函数添加一定的功能.装饰器的返回值也是一个函数对象. 分类: 1.不带参数的装饰器函数: def wrapper(f): #装饰器 def inner(): '''执行函数之前要做的''' print('葫芦娃葫芦娃,一根藤上七个娃.') ret = f() '''执行函数之后要做的''' print('风吹雨打都不怕,啦啦啦啦~') return ret return inner @wrapper #语法糖…
在python多线程开发中,全局变量是多个线程共享的数据,局部变量是各自线程的,非共享的. 如下几种写法都是可以的: 第一种:将列表当成参数传递给线程 from threading import Thread import time def work1(nums): nums.append(44) print("----in work1---",nums) def work2(nums): #延时一会,保证t1线程中的事情做完 time.sleep(1) print("---…
1.parse_known_args()和parse_args()函数 该函数为命令行解析函数,调用时需要import argparse(命令行选项.参数和子命令的解析器). 以下内容摘自python标准库: 使用argparse的第一步是创建一个ArgumentParser对象: parser = argparse.ArgumentParser(description='Process some integers.') ArgumentParser对象会保存把命令行解析成Python数据类型所…
递归函数 在函数内部,可以调用其他函数.如果一个函数在内部调用自身本身,这个函数就是递归函数. 函数实现过程 def calc(n): v = int(n//2) print(v) if v > 0: calc(v) print(n) calc(10) 输出结果 5 2 1 0 1 2 5 10 为什么是这个结果 递归特性: 必须有一个明确的结束条件 每次进入更深一层递归时,问题规模相比上次递归都应有所减少 一般通过return结束递归 递归效率不高,递归层次过多会导致栈溢出(在计算机中,函数调…
函数使用背景 假设老板让你写一个监控程序,24小时全年无休的监控你们公司网站服务器的系统状况, 当cpu\memory\disk等指标的使用量超过阀值时即发邮件报警, 你掏空了所有的知识量,写出了以下代码 从图中可以看出上述代码存在了两个问题 1.代码冗余 2.维护性差 我们如何解决这个问题?请看下图 从上图可以看出:使用函数可以带来以下好处 减少重复代码 使程序变的可扩展 使程序变得易维护 函数定义 函数一词来源于数学,但编程中的「函数」概念,与数学中的函数是有很大不同的,具体区别,我们后面会…
将函数存储在模块 函数可以将代码块和主程序分离,通过给函数指定描述性名称,可以让主程序更加容易理解,还可以更进一步,将函数存储在模块的独立文件中,再将模块导入到主程序.import 语句允许再当前运行的程序文件当中使用模块中的代码. 导入整个模块 首先就是创建模块,模块的扩展名是.py的文件,包含到导入到程序中的代码. 以上:我先创建了一个module模块(名字自己起的),先保存为py格式,然后第二张图片导入前面的模块.这是最最简单的脚本了. python在读取这个文件的时候,代码行import…
匿名函数 匿名函数就是不需要显式的指定函数名. 关键字lambda表示匿名函数,冒号前面的n表示函数参数,可以有多个参数. 匿名函数有个限制,就是只能有一个表达式,不用写return,返回值就是该表达式的结果. 用匿名函数有个好处,因为函数没有名字,不必担心函数名冲突.此外,匿名函数也是一个函数对象,也可以把匿名函数赋值给一个变量,再利用变量来调用该函数: 有些函数在代码中只用一次,而且函数体比较简单,使用匿名函数可以减少代码量,看起来比较"优雅“ #这段代码 def calc(x,y): re…
sys.argv 参数 「argv」是「argument variable」参数变量的简写形式,一般在命令行调用的时候由系统传递给程序.这个变量其实是一个List列表,argv[0] 一般是“被调用的脚本文件名或全路径”,这个与操作系统有关,argv[1]和以后就是传入的系统命令参数. 实例如下: #!/usr/bin/env python import sys,os a=sys.argv[1:] print a,a[0] print (sys.argv) 运行结果如下:input:  ./te…
一.sys 模块 sys是Python的一个「标准库」,也就是官方出的「模块」,是「System」的简写,封装了一些系统的信息和接口. 官方的文档参考:https://docs.python.org/2/library/sys.html 中文版文档参考:http://xukaizijian.blog.163.com/blog/static/170433119201111625428624/ 二.sys.argv 参数 「argv」是「argument variable」参数变量的简写形式,一般在…
函数可以通过 关键字参数 的形式来调用,形如 keyword = value .例如,以下的函数: def parrot(voltage, state='a stiff', action='voom', type='Norwegian Blue'): print "-- This parrot wouldn't", action, print "if you put", voltage, "volts through it." print &qu…
一.函数参数和返回值 --参数:负责给函数传递一些必要的数据或者信息 -形参(形式参数):在函数定义的时候用到的参数,没有具体值,只是一个占位符号 -实参(实际参数):在调用函数的时候输入的值 example: >>> def hello(person):...     print("{0},how are you ?".format(person))...     print("{},i am fine".format(person))...&g…
函数 -函数是代码的一种组织形式 -函数应该能完成一项特定的工作,而且一般一个函数完成一项工作 -函数的使用: 函数使用需要先定义 使用函数,俗称调用 pps:1.只是定义的话不会执行 2.def关键字,后跟一个空格 3.函数名,自己定义,起名需要遵循命名规则,约定俗成,大驼峰命名只给类用 4.后面括号和冒号不能省略,括号内可以有参数 5.函数内所有代码缩进 example: >>> def fun():...     print("hello world")    …
def func(x, y): print(x) print(y) func(x=1,2) #报错,关键参数一定不能放在位置参数前面 func(1,y=2) #可以正常运行 #参数组,适用于实参个数不固定的场合,一定要放在参数的后面 #把N个位置参数,转换成元祖的方式,*args只能接受位置参数 def fun2(*args): print(args) fun2(1,2,3,4,5,6) #**kwargs 把N个关键字参数,转换为字典的方式 def fun1(**kwargs): print(…
print dic.items() #[('a', 'hello'), ('c', 'you'), ('b', 'how')] print dic.iteritems() #<dictionary-itemiterator object at 0x020E9A50> 深究:iteritor是迭代器的意思,一次反悔一个数据项,直到没有为止 for i in dic.iteritems(): print i 结果:('a', 'hello') ('c', 'you') ('b', 'how')…
x = def change_global(): global x x = x + change_global() print(x) result: 2…
匿名函数 lambda的用法: lambda x:x+1 解释,同等于以下函数 def test(x): return x+1 因为没有函数名,所以称为匿名函数 只适用于简易的逻辑,复杂逻辑无法实现 lambda一般是嵌套在其他内容中,只是为了简化代码 函数作用域 理解全局变量和局部变量的概念 全局变量,定义的变量无缩进,即在代码层最外围: 局部变量,定义的变量有缩进,属于某个代码块中. 全局变量: a  = 1 def test(): print(a)    #结果为1 print(a)   …
1.函数的基本概念 定义: 函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需调用其函数名即可 特性: 减少重复代码 使程序变的可扩展 使程序变得易维护 语法定义 def sayhi():#函数名 print("Hello, I'm nobody!") sayhi() #调用函数 可以带参数 #下面这段代码 a,b = 5,8 c = a**b print(c) #改成用函数写 def calc(x,y): res = x**y return res #返回…
匿名函数的定义 全局变量和局部变量的概念 global(全局变量)和 nonlocal(局部变量) 闭包.递归.回调 匿名函数 匿名函数  lambda 语法规则:lambda   参数 : 表达式 lambda匿名函数的格式:冒号前是参数,可以有多个,用逗号隔开,冒号右边的为表达式 lambda返回值是一个函数的地址,也就是函数对象 函数作用域 函数内部 函数内部的变量,作用域只在函数内部,函数内部不可以直接更改函数外部的变量 global(全局变量) 函数内部如果需要改变全局变量,就需要使用…