码迷,mamicode.com
首页 > 其他好文 > 详细

function.py

时间:2016-06-26 15:21:29      阅读:136      评论:0      收藏:0      [点我收藏+]

标签:

#文档字符串
def square(x):
    calculates the square of the number x
    return x*x
square.__doc__
help(square)



#列表做实参
#当2个变量同时引用一个列表时,他们的确是同时引一个列表用
#当在序列中做切片时,返回的切片总是一个副本
def change(x):
    x[0]=***
name1=[aaa,bbb] #[‘***‘, ‘bbb‘]
name2=[aaa,bbb] #[‘aaa‘, ‘bbb‘]
change(name1)
change(name2[:])
print(name1,name2)

#函数应用
def init(data):
    data[first]={}
    data[middle]={}
    data[end]={}
def lookup(data,label,name):
    return data[label].get(name)
def store(data,full_name):
    names=full_name.split();
    if len(names)==2: names.insert(1,‘‘)
    labels=first,middle,end
    for label,name in zip(labels,names):
        people=lookup(data,label,name)
        #print(people,full_name,label,name)
        if people:
            people.append(full_name)
        else:
            data[label][name]=[full_name]

MyName={}
init(MyName)

store(MyName,Ma LIe Het)
print(lookup(MyName,middle,LIe))

store(MyName,Robin Hood)
store(MyName,Robin Loksley)
print(lookup(MyName,first,Robin))
print(lookup(MyName,middle,‘‘))

#关键字参数,默认值
def hello(greet=hello,name=world):
    print(%s, %s % (greet,name))
hello()
hello(Greeting)
hello(Greeting,CC)
hello(name=CC)
def hello_2(name,greet=hello):
    print(%s,%s % (greet,name))       
try:
  hello_2()   #error missing 1 required positional argument: ‘name‘
except Exception as e:
    print(e)

#收集参数
#*收集成元组
def print_1(*arg):
    print(arg)
def print_2(name,*arg):
    print(name)
    print(arg)
def print_3(*arg,name):
    print(arg)
    print(name)
print_1(abc)  #(‘abc‘,)元组
print_1(1,2,3)  #(1,2,3)
print_2(no)   #no ()
try:
    print_3(1,2,3)  #error
except Exception as e:
    print(e)
print_3(1,2,name=3) #OK
#**收集[关键字参数]成字典
def print_para(**arg):  #必须是关键字参数,不能是字典
    print(arg)  #arg变成了字典
print_para(x=1,y=2,z=3) #{‘z‘: 3, ‘y‘: 2, ‘x‘: 1}
a={z: 3, y: 2, x: 1}
try:
    print_para(a)   #error 参数不能是字典,而应是关键字参数
except Exception as e:
    print(e)
def print_dict(**arg):
    print(%(name)s, is %(job)s % arg)
print_dict(job=a,name=2)    #2 is a
def print_para_2(x,y=1,*p1,**p2):
    print(x,y)
    print(p1)
    print(p2)
print_para_2(1,2,3,4,a=1,b=2)   #1 2 (3,4) {‘a‘: 1, ‘b‘: 2}
print_para_2(1) #1 1 () {}
#拓展
def test(size):
    a,b=size
try:
    test(1,2)   #error
    test(1)     #error
except Exception as e:
    print(e)
a=(1,2)
test(a)     #OK
try:
    test(*a)    #error
except Exception as e:
    print(e)

#参数反转
#*号只在定义函数或调用时才有用
def add(a,b):   return a+b
t=(1,2)
add(*t) #t元素个数要与add参数个数一致
def hello_2(name,greet=hello):
    print(%s,%s % (greet,name))
t={greet:Well,name:CC}
hello_2(**t)    #t元素个数要与hello_2个数一致,对应


print(---嵌套函数---)
def f1(x):
    print("x=",x)
    def f2(y):
        print(x=,x,y=,y)
        return x*y
    return f2

f1(2)(3)    #x=2
m=f1(2)
m(3)

 

function.py

标签:

原文地址:http://www.cnblogs.com/feifeidxl/p/5617891.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!