这只是我的个人理解: 在Python的函数中偶尔会看到函数定义的上一行有@functionName的修饰,当解释器读到@的这样的修饰符之后,会先解析@后的内容,直接就把@下一行的函数或者类作为@后边的函数的参数...,然后将返回值赋值给下一行修饰的函数对象。...比如: @a @b def c(): … python会按照自下而上的顺序把各自的函数结果作为下一个函数(上面的函数)的输入,也就是a(b(c())) def funA(a):...>>> ================================ RESTART ================================ >>> funB funA 则整个程序的执行过程就是
__name__用来显示函数的名称,__doc__用来显示文档字符串也就是("""文档字符串""")这里面的内容 2.首先我们来看不加@wraps的例子 def my_decorator(func):...Test function wrapper decorator 我们来看执行的整个过程:在调用test()函数时,首先会调用装饰器(将test作为参数传入到装饰器中),执wrapper函数,再执行test...但我们可以看到test函数的名字:__name__为wrapper,__doc__为decorator,已经不是原来的test函数了。...Test function test Testword 我们会发现,test函数的__name__和__doc__还是原来的,即函数名称和属性没有变换。
参考: https://www.liujiangblog.com/course/python/83
/usr/bin/python 其他有的可能是 python2 或者 python3 都是一个样子,一开始我以为是像 C++ 那样子一样的头文件,后来把他当做注释了。.../usr/bin/python 作用: 告诉操作系统在执行你的这个脚本时,需要调用的python 解释器是在 usr/bin 下的,这样她(操作系统)就能找到了。 #!.../usr/bin/env python 作用: 如果你很调皮的把 python 没有装到其他地方,再向上面那样子,操作系统就找不到了,那不就不能执行了。...所以,这个时候你要告诉她(操作系统)你把 python 安装到哪里去了,可你总不能写一大串的路径又或者每次换个地方就要重新写一遍吧,这个时候就可以告诉她(操作系统)这里东西就放在环境设置里面,你自己根据环境设置去找就可以啦...所以,你就可以任意的安装在不同地方了。
参考资料:https://www.cnblogs.com/hardy-test/p/6037982.html 一个星(*):表示接收的参数作为元组来处理 两个星():表示接收的参数作为字典来处理 举个栗子
一、作用域介绍 概念 变量可以使用的范围,程序的变量并不是哪个位置都可以访问的,访问的权限决定于变量时在哪里定义的 作用域的划分 局部作用域(L) 闭包函数外到函数中(E) 全局作用域(G) 内建作用域...(B) 变量查找的规则 L->E->G->B 注意 Python 中只有模块(module),类(class)以及函数(def、lambda)才会引入新的作用域,其它的代码块(如 if/elif/else.../、try/except、for/while等)是不会引入新的作用域的,也就是说这这些语句内定义的变量,外部也可以访问 二、体现作用域 num1 = 1 if 1: num2 = 2...直接修改全局变量相当于在局部作用域中新建一个局部变量 print("1-", num) func() print("2-", num) 四、修改嵌套作用域中变量的值 a = 1 def func1...(): a = 2 c = 3 def func2(): nonlocal a a = 100 #想要修改嵌套作用域中的变量,需要将其声明成嵌套作用域中的变量
参考链接: Python property() 1、为什么要使用property这个单词 我们首先来分析一下为什么但是龟哥会用property这个单词,而不用foo,bar这样的单词呢,想必一定有他的想法...property ——> 属性 虽然我们不能猜测出(当然我不提倡乱猜)它的具体意思,但是我们可能应该想到,被他修饰的应该和属性的意思有些许联系的。 ...2、具体分析 我们知道人的身高和臂长大致呈1:1的关系,现在我们想通过一个人的身高求得一个人臂长,可以像下面的方法或得 方法一 class Person(object): def __init...其实,还有一个原因就是,方法一中通过方法的形式获取属性,我们就会想,是方法就想这个方法需不需要参数的问题。...显然通过property很好的解决了这个问题,既然我们可以阅读代码时,一眼就能想到这是一个属性值(或者我们想要的值而已),还很好的避免的传参的问题。
变量作用域 Python能够改变变量作用域的代码段是 、 class 、 lamda....def if/elif/else、try/except/finally、for/while 并不能涉及变量作用域的更改,也就是说他们的代码块中的变量,在外部也是可以访问的 变量搜索路径是:局部变量->全局变量...局部变量vs全局变量 局部变量:在函数内部,类内部,lamda.的变量,它的作用域仅在函数、类、lamda里面 全局变量:在当前py文件都生效的变量 global的作用 让局部变量变成全局变量 def...(Python);Python内建函数的名字空间 这是我们代码找变量的顺序,倘若最后一个python内建函数也没有找到的话就会报错了 什么是内建函数呢?...,所以只要记得Python内建函数作用域 > 全局变量作用域 > 局部变量作用域就好了
块级作用域??...python中可以执行成功,,这是因为在Python中是没有块级作用域的,代码块里的变量,外部可以调用,所以可运行成功; 函数局部作用域 def func(): name = "zxt"...print(name) name 'name' is not defined name变量只在func()函数内部中生效,所以在全局中是没法调用的; 作用域误区 name = "lzl" def...f1(): print(name) def f2(): name = "eric" f1() f2() lzl 我们都知道,Python中有作用域链,变量会由内到外找,先去自己作用域去找...,原因是Python是静态作用域(词法作用域),因此在编译阶段,就决定了变量的读取方式。
'@'符号用作函数修饰符是python2.4新增加的功能,修饰符必须出现在函数定义前一行,不允许和函数定义在同一行。也就是说@A def f(): 是非法的。...一个修饰符就是一个函数,它将被修饰的函数做为参数,并返回修饰后的同名函数或其它可调用的东西。...\master下的webapp.py。...自补2 我们知道,Python中并没有提供直接的接口支持,但是接口技术又是现代软件设计中的重要技术,借助于它可以极大地减小软件模块间的耦合度。...于是,借助于zope.interface,python中也可以引入接口技术。
pygame是一个设计用来开发游戏的Python模块,在SDL库的基础上提供了各种接口,从而使用用户能够使用python语言创建各种各样的游戏或多媒体程序,pygame支持多种操作系统,当然,它是一个开源的软件...以下是官方的说明: pygame是 跨平台 Python模块,专为电子游戏设计。 包含图像、声音。建立在SDL基础上,允许实时电子游戏研发而无需被低阶语言,如C语言或是更低阶的组合语言束缚。...基于这样一个设想,所有需要的游戏功能和理念都(主要是图像方面)都完全简化位游戏逻辑本身,所有的资源结构都可以由高级语言提供,如Python。 ...SDL(Simple DirectMedia Layer)是一套开放源代码的跨平台多媒体开发函式库,使用C语言写成。...SDL提供了数种控制图像、声音、输出入的函式,让开发者只要用相同或是相似的程序码就可以开发出跨多个平台(Linux、Windows、Mac OS X等)的应用软件。
在python中不同的异常可以用不同的类型(python中统一了类与类型,类型即类)去标识,不同的类对象标识不同的异常,一个异常标识一种错误 AttributeError #试图访问一个对象没有的树形...#Ctrl+C被按下 NameError #使用一个还未被赋予对象的变量 SyntaxError #Python代码非法,代码不能编译(个人认为这是语法错误,写错了...python特定的语法结构捕获异常 #异常捕获 单个分支 try: 逻辑代码(被捕获得内容) except 异常类型: 检测到异常,就执行这个位置的逻辑 # 多个分支捕获 #..., 结果为raise一个AssertionError出来 用sys模块回溯最后的异常 当发生异常时Python会回溯异常,给出大量的提示,可能会给程序员的定位和纠错带来一定的困难,这是可以使用sys模块回溯最近一次异常...)]] 其中,用 [] 括起来的为可选参数,其作用是指定抛出的异常名称,以及异常信息的相关描述。
最近公众号新增加了一个栏目,就是每天给大家解答一道Python常见的面试题,反正每天不贪多,一天一题,正好合适,只希望这个面试栏目,给那些正在准备面试的同学,提供一点点帮助!...小猿会从最基础的面试题开始,每天一题。如果参考答案不够好,或者有错误的话,麻烦大家可以在留言区给出自己的意见和讨论,大家是要一起学习的 。...废话不多说,开始今天的题目: 问:说说Python中pass的作用? 答:Python pass 是一个空的语句块,表示什么也不做,一般作为占位符或者创建占位程序。...pass 作用为了保持程序结构的完整性,否则会报错 。在写一个函数但是不确定里面写啥的时候,这个时候可以使用 pass。...这时加上pass之后,可以让程序的结构完整 ? 重新运行程序,不再报错 ? 总结Python pass的用处都有哪些? ? 如果对于参考答案有补充的,大家可以在评论区指出和补充,欢迎留言!
虽说函数是重点学习对象但是也是属于Python基础教程范畴内的。 学习函数的大致目标: 函数的作用、函数的使用步骤、函数的参数作用、函数的返回值作用、函数的说明文档、函数嵌套。...一、函数的作用 函数含义:函数就是将一段具有独立功能的代码块整合到一个整体并命名,在需要的位置调用这个名称即可完成对应的需求。 函数作用:函数再开发过程中,可以更高效的实现代码重用。...二、函数使用步骤 1、定义函数 def 函数名(参数): 代码1 代码2 ...... 2、调用函数 函数名(参数) 注意: 1.不同的需求,参数可有可无 2.在Python中,...函数必须先定义后使用 三、快速体验函数作用和使用步骤 需求: 复现ATM取钱功能 1、搭建整体框架(复现需求) print('密码正确登录成功') # 显示“选择功能”界面 调用函数 print('查询余额完毕...() print('取了2000元钱') # 显示“选择功能”界面 调用函数 select_func() 文章借鉴来源:http://www.wakey.com.cn/document-column-python.html
# python的__name__ = 'main' 的作用 __name__ = '__main__' 的作用 先写一个模块: #module.py def main(): print "we...are in %s"%__name__ if __name__ == '__main__': main() 我们经常看到想上面代码底下的代码,其主要的意义在于: # 让你写的脚本即可以导入别的模块中用...,并调用一次main()函数会是怎样的结果呢?...name__的值就是我们这个py文件的名字而不是__main__。...这个功能还有一个用处:调试代码的时候,在”if __name__ == '__main__'“ 中加入一些我们的调试代码,我们可以让外部模块调用的时候不执行 我们的调试代码,但是如果我们想排查问题的时候
#6.2变量的作用域,是变量的可访问范围,也称为命名空间。在第一次 #给变量赋值时,python创建变量。第一次给变量赋值的位置决定了变量的作用域。...#作用域类型 #一个程序通常包含了变量、函数和其他语句。变量和函数涉及可访问范围。一个程序中的变量和函数 #要么在当前文件中定义,要么就是python预先定义好。函数和程序文件划分了不同的作用域。...#在同一个作用域中。变量名是唯一的。在不同的作用域中,相同的变量名也表示了不同的变量。 #在pyton中作用域范围可以分为内置作用域、文件作用域、函数嵌套作用域和本地作用域。...#根据作用域的范围大小,作用域外部的变量和函数,可以直接作用在作用域内使用;相反,作用域内的变量 #不能在作用域外直接使用。 #根据作用域范围,通常将变量名分为两种:全局变量和本地变量。...内置函数print() #作用域外的变量和作用域内的变量名称相同时,遵循本地“优先”原则,此时外部的作用域被屏蔽 #---作用域隔离原则。
一、变量作用域的含义 变量的作用域说白了就是变量的值从哪里获取,或者说变量取值的地方 我们在写代码过程中会用到很多变量,这些变量会出现在各种代码块中,有的出现在函数块里,有的在函数块外,例如: def...,是应该先识别函数中的还是先识别函数外的呢,其实python内部在识别变量的值得时候是有顺序的,不是胡乱读取的,python内部对于获取变量的值是规定了一个顺序的。...二、变量定义域顺序 LEGB原则 当你在代码里声明一个变量后,python会在LEGB四个作用域里搜索变量的值,它的搜索是有顺序的,第一步现在L也就是当前最里层局部作用域内找,如果没找到,第二步会跑到包含当前层的上一层作用域...E里找,还没找到的话,第三部会去模块级的里面G里找,最后是去python里的固定模块里找。...对于模块,类,函数里出现的变量就要注意了,它们会引入新的作用域,在这里如果内部 作用域声明了变量,那么就用内部变量的值,内部如果没有声明,就会使用外部作用域的值
单前导下划线 _var是一个Python命名约定,表示这个名称是供内部使用的。 它通常不由Python解释器强制执行,仅仅作为一种对程序员的提示。2....单末尾下划线 var_单个末尾下划线(后缀)是一个约定,用来避免与Python关键字产生命名冲突;像class或def这样的名称已经被一个关键字所占用,附加一个下划线来解决命名冲突。3....双前导下划线 __varPython解释器自动在这种双下划线的私有方法或者私有属性的前面加上了 _类名 ,所以使用原定义的变量名和方法名访问不了变量和方法, 在规范上,这种双下划线的私有方法和私有属性是不应该在外部访问的...双前导和双末尾下划线 _var_Python保留了有双前导和双末尾下划线的名称,用于特殊用途。...这样的例子有,__init__对象构造函数,或__call__ --- 它使得一个对象可以被调用,所以尽量不用这种表示方式,以免和python冲突。5.单下划线 _某个变量是临时的或无关紧要的。
__str__()函数的作用: 不知道大家再写程序是,打印一个实例化对象时,打印的其实时一个对象的地址。而通过__str__()函数就可以帮助我们打印对象中具体的属性值,或者你想得到的东西。...因为再python中调用print()打印实例化对象时会调用__str__()如果__str__()中有返回值,就会打印其中的返回值。
我们在写函数时,时常需要引用全局的变量,或对全局变量赋值。又或者偶尔遇到局部变量与全局变量同名。在处理这些问题时,python语言的游戏规则是怎样的?今天我们就来学习这方面的内容。 什么是作用域?...在python语言里,在函数内部定义的变量,仅在函数内有效。在函数外面定义的变量对全局有效。我们把这种变量的有效范围叫作变量的作用域。...在python语言里,当引用变量时,会按照由内向外、由近及远的找查变量的定义及赋值。...从上面的代码来看,python会自动按照由里向外、由近及远的规则查找变量。来看下面的几段代码。...for循环没有单独的作用域 for内部定义的变量在循环结束后变量仍然有效。
领取专属 10元无门槛券
手把手带您无忧上云