主页

索引

模块索引

搜索页面

函数

基础

python函数:

如果一个Python函数、类方法或属性的名字以两个下划线开始(但不是结束), 它是私有的
类方法或者是私有 (只能在它们自已的类中使用) 或者是公有 (任何地方都可使用)

def <funName>():    #定义
... ...

<funName>() # 调用

实例1:

def func(x):
    global y        #全局变量
    print 'x is', x #打印变量
    x = 2    #修改变量

x = 50  #函数外修改
func(x) #执行函数

//——使用默认参数值::
def say(message, times = 1):
    print message * times

say('Hello')
say('World', 5)

//实例3——ifelse、return語句::
def maximum(x, y):
    if x > y:
        return x
    else:
        return y
print maximum(2, 3)

DocStrings(文档字符串, 它通常被简称为 docstrings, DocStrings是一个重要的工具, 由于它帮助你的程序文档更加简单易懂, 你应该尽量使用它):

def printMax(x, y):
    '''Prints the maximum of two numbers.
    The two values must be integers.'''     # 文档字串
    x = int(x) # convert to integers, if possible
    y = int(y)

    if x > y:
        print x, 'is maximum'
    else:
        print y, 'is maximum'

    printMax(3, 5)
    print printMax.__doc__  #文档打印

变量作用域

全局变量global:

关键字: global

实例:
num = 1
def fun1():
    global num  # 需要使用 global 关键字声明
    print(num)  # 1
    num = 123
    print(num)  # 123
fun1()
print(num)  # 123

闭包:

是函数式编程的一个重要的语法结构,是一种特殊的内嵌函数。
如果在一个内部函数里对外层非全局作用域的变量进行引用,那么内部函数就被认为是闭包
通过闭包可以访问外层非全局作用域的变量,这个作用域称为 闭包作用域
闭包的返回值通常是函数。

实例:
def funX(x):
    def funY(y):
        return x * y

    return funY

i = funX(8)
print(type(i))  # <class 'function'>
print(i(5))  # 40

全局变量nonlocal:

如果要修改闭包作用域中的变量则需要 nonlocal 关键字

def outer():
    num = 10

    def inner():
        nonlocal num  # nonlocal关键字声明
        num = 100
        print(num)

    inner()
    print(num)

outer()

# 100
# 100

Lambda 表达式

在 Python 里有两类函数:

第一类:用 def 关键词定义的正规函数
第二类:用 lambda 关键词定义的匿名函数

格式:

lambda argument_list: expression

说明:
  lambda - 定义匿名函数的关键词。
  argument_list - 函数参数
  expression - 只是一个表达式

备注

expression 中没有 return 语句,因为 lambda 不需要它来返回,表达式本身结果就是返回值。匿名函数拥有自己的命名空间,且不能访问自己参数列表之外或全局命名空间里的参数。

可以这样认为,lambda 作为一个表达式,定义了一个匿名函数,如:

:
g = lambda x:x+1

可看作:
def g(x):
     return x+1

备注

  lambda 定义了一个匿名函数。lambda 并不会带来程序运行效率的提高,只会使代码更简洁。

全局函数方便使用的,filter, map, reduce:

foo = [2, 18, 9, 22, 17, 24, 8, 12, 27]
print(filter(lambda x: x % 3 == 0, foo))
print(map(lambda x: x * 2 + 10, foo))
print(reduce(lambda x, y: x + y, foo))

实例:

def make_repeater(n):
    return lambda s: s*n

twice = make_repeater(2)

print(twice('word'))

主页

索引

模块索引

搜索页面