python学习历程——抽象(day 4)

来源:互联网 发布:城觅 网络异常 编辑:程序博客网 时间:2024/06/03 18:31

前几天学习了python的一些基础知识,比如:数据结构,了解了列表、元组、字符串、字典等,并了解学习了这些数据结构的一些方法,紧接着学习了一些语句,比如循环、if语句等,接着学习函数、参数等将在后面将用于抽象等经常用到的概念
1、函数
使用 def 定义函数,函数中的return语句非常重要,return语句是用来从函数中返回值的。有的函数并没有return,或者return语句后面并没有返回值,只用于函数结束
2、文档化函数(如果在函数开头写下字符串,他会作为函数的一部分进行存储)

>>> def square(x):    'Calculates the square of the number'    return x*x>>> square.__doc__  #访问文档字符串'Calculates the square of the number'

3、参数
形参:定义函数时,函数名后面的为形参,函数调用时,函数名后面的为实参
4、函数参数表达形式
a、位置参数

>>> def example(x,y,z,f):  #位置参数    return x,y,z,f>>> example('1',1,'a','a+b')  #实参与形参 参数位置一一对应('1', 1, 'a', 'a+b')

b、关键字参数

>>> def hello(name,age):    print('name:%s,age:%d'%(name,age))    return>>> hello(name='lili',age=12) #在调用函数时,采用关键字,在参数中明确参数意义name:lili,age:12
>>> def hello(name='lili',age=13): #也可以直接在定义函数的时候,给参数添加默认值,然后直接调用,也可在调用时设定参数不同的值    print('name:%s,age:%d'%(name,age))    return>>> hello()name:lili,age:13

位置参数和关键字参数也可联合使用,只是位置参数应该放在前面
5、收集参数

>>> def get_name(*names):  #参数表示为*names,多加入一个*号    print(names)    return>>> get_name('lili','anla','dd') #可传入3个参数('lili', 'anla', 'dd')>>> get_name('mm') #可传入1个参数('mm',) #且参数返回为元组类型

如上述代码参数前加上一个*号作为参数,调用时则可传入多个实参,且元组形式返回。且可以与普通参数一起使用,用于上述提到的位置参数

>>> def get_info(**params):  #参数前面加两个**    print (params)    return>>> get_info(x=1,y=2,z=3)#以关键字参数的形式传入参数{'y': 2, 'z': 3, 'x': 1}    #以字典的形式返回参数

上述参数中参数前面加两个**,调用时可传入多个关键字参数,并返回字典形式
两种形式同样也可以一起使用,并且也可以烦着来用,在调用函数的时候作为实参使用,如下:

>>> def add(x,y):    return x+y>>> params=(1,2)>>> add(*params)  #在调用函数时使用
>>> def get_info(name,age):    print('name is %s,age is %d'%(name,age))    return>>> params={'name':'lll','age':12}>>> get_info(**params)name is lll,age is 12

6、作用域
全局变量 局部变量
globals()[‘parameters’] locals()[‘parameters]
递归

#采用递归的思想进行二分查找def select_num(numbers,num,lower,upper):    if upper is None:         upper=len(numbers)-1    if lower==upper:        return numbers[lower]    else:        middle = (lower+upper)//2        if num > numbers[middle]:            return select_num(numbers,num,middle+1,upper)        else:            return select_num(numbers, num,lower,middle)x=select_num(sorted([1,4,56,5,98,555,32,33,444,44]),5,0,None)print('查找的数字为:%d'%x )

7、函数式编程:

map(func,seq[,seq...]#对序列中每个元素应用函数filter(func,seq)#返回其函数为真的元素列表reduce(func,seq)#其中函数参数必须为两个lambda
原创粉丝点击