谭子python学习笔记--函数定义及作用域
来源:互联网 发布:mac连不上校园网 编辑:程序博客网 时间:2024/05/21 08:35
- 函数
- 函数相关的语句和表达式
- 基础语法
- 1定义及基本结构
- 2嵌套
- 作用域法则
- 1内置作用域
- 2global
- 3模块中的全局变量
- 4嵌套函数的作用域
- 5工厂函数
函数
函数是为了代码最大程度的重用和最小化代码冗余而提供的最基本的程序结构
- 最大化的代码重用和最小化的代码冗余
- 流程分解
函数相关的语句和表达式
global x
x = ‘new’ 全局变量 yield def square(x):
for i in range(x): yield i**2 迭代器 lambda func=lambda x:x**2 匿名函数
说明:
- def是可执行代码。函数并不存在,直到Python运行了def后才存在。既是语句其可以与if判断语句、while循环语句、def语句等嵌套使用。在典型的操作中,def语句在模块文件中编写,并自然而然的在模块文件中第一次导入的时候生成定义。
- def创建了一个对象并将其赋值给某个变量名当Python运行到def时,它将会生成一个新的函数对象并将其赋值给这个函数名。
- lambda创建一个对象但将其作为结果返回
- return将一个结果对象发送给调用者
- yield向调用者发回一个结果对象,但是记住它离开的地方
- global声明了一个模块级的便令并被赋值。变量名往往需要关注它的作用域(也就是说变量存储的地方)
- 函数是通过赋值(对象引用传递的)
- 参数、返回值 变量并不是声明
基础语法
1)定义及基本结构
def <name>(arg1,arg2,... argN): <statement> [return <value>] [yield <value>]
2)嵌套
def my_func(s,flag=1): print flag if flag == 1: def func(s): return s + ' world!' elif flag == 2: def func(s): return s%10 else: return -1 return func(s)print my_func('hello')
作用域法则
- 内嵌的模块是全局作用域
- 全局作用域的作用范围仅限于单个文件
- 每次函数的调用都创建了一个新的本地作用域
- 赋值的变量除非声明为全局变量,否则均为本地变量
- 所有其他的变量名都可以归纳为本地、全局或内置的
example:
x = 99def func(y): z = x + y return zfunc(1)
说明:
全局变量名:x,func
本地变量名:y,z
y和z都是本地变量,因为他们都是在函数定义内部进行赋值的,变量的赋值将改变函数的作用域
1)内置作用域
>>> import __builtin__>>> dir(__builtin__)['ArithmeticError', 'AssertionError', 'AttributeError', 'BaseException', 'BufferError', 'BytesWarning', 'DeprecationWarning', 'EOFError', 'Ellipsis', 'EnvironmentError', 'Exception', 'False', 'FloatingPointError', 'FutureWarning', 'GeneratorExit', 'IOError', 'ImportError', 'ImportWarning', 'IndentationError', 'IndexError', 'KeyError', 'KeyboardInterrupt', 'LookupError', 'MemoryError', 'NameError', 'None', 'NotImplemented', 'NotImplementedError', 'OSError', 'OverflowError', 'PendingDeprecationWarning', 'ReferenceError', 'RuntimeError', 'RuntimeWarning', 'StandardError', 'StopIteration', 'SyntaxError', 'SyntaxWarning', 'SystemError', 'SystemExit', 'TabError', 'True', 'TypeError', 'UnboundLocalError', 'UnicodeDecodeError', 'UnicodeEncodeError', 'UnicodeError', 'UnicodeTranslateError', 'UnicodeWarning', 'UserWarning', 'ValueError', 'Warning', 'WindowsError', 'ZeroDivisionError', '_', '__debug__', '__doc__', '__import__', '__name__', '__package__', 'abs', 'all', 'any', 'apply', 'basestring', 'bin', 'bool', 'buffer', 'bytearray', 'bytes', 'callable', 'chr', 'classmethod', 'cmp', 'coerce', 'compile', 'complex', 'copyright', 'credits', 'delattr', 'dict', 'dir', 'divmod', 'enumerate', 'eval', 'execfile', 'exit', 'file', 'filter', 'float', 'format', 'frozenset', 'getattr', 'globals', 'hasattr', 'hash', 'help', 'hex', 'id', 'input', 'int', 'intern', 'isinstance', 'issubclass', 'iter', 'len', 'license', 'list', 'locals', 'long', 'map', 'max', 'memoryview', 'min', 'next', 'object', 'oct', 'open', 'ord', 'pow', 'print', 'property', 'quit', 'range', 'raw_input', 'reduce', 'reload', 'repr', 'reversed', 'round', 'runfile', 'set', 'setattr', 'slice', 'sorted', 'staticmethod', 'str', 'sum', 'super', 'tuple', 'type', 'unichr', 'unicode', 'vars', 'xrange', 'zip']
2)global
尽量少使用全局变量
x = 99def func(z,y): global x x = x + y return xfunc(1,2)
3)模块中的全局变量
模块:test.py
x = 99def func(z,y): global x x = x + y return x
加载模块,访问变量
import testprint test.xprint test.func(1,2)
4)嵌套函数的作用域
x = 99y = 80def f1(): x = 88 def f2(): print x print y f2()f1()
5)工厂函数
def maker(N): def action(X): return X**N return actionf = maker(2)f(3)
阅读全文
0 0
- 谭子python学习笔记--函数定义及作用域
- 【Python学习笔记】定义函数
- python学习笔记 定义函数
- Python学习笔记-1(变量、类型、函数、类、作用域)
- 谭子python学习笔记--函数的参数
- Coffee script 学习笔记I --函数及变量作用域
- python学习-函数、作用域
- Python学习笔记:作用域
- 转 [学习笔记]时钟中断的定义及作用
- 函数定义作用域
- python 学习笔记(五)函数--定义函数
- python 模块、作用域及一些函数
- Python学习def函数的定义、使用及参数传递
- Python学习def函数的定义、使用及参数传递
- Python学习--定义函数及参数传值
- Python学习笔记——函数定义、调用
- 【Python】学习笔记——-3.2、定义函数
- Python学习笔记(9):函数调用与定义
- python3实现冒泡排序和插入排序
- Linux sed命令(一)基础
- Modbus-RTU通信入门
- python学习日记(5)
- 安卓控件4
- 谭子python学习笔记--函数定义及作用域
- MyBatis+Spring 事务管理
- 【自学oracle】韩顺平oracle视频教程学习笔记
- canvas添加水印
- 关于VS2015 inet_ntoa(),inet_addr()不能使用
- 学习使用Docker、Docker-Compose和Rancher搭建部署Pipeline(一)
- 谭子python学习笔记--函数的参数
- Android studio 初步使用JNI(一)配置NDK
- Gradle语法简介