Python全栈开发【基础三】 |
本节内容:
- 函数(全局与局部变量)
- 递归
- 内置函数
函数 |
一、定义和使用
函数最重要的是减少代码的重用性和增强代码可读性
def 函数名(参数): ... 函数体 ... 返回值
函数的定义主要有如下要点:
- def:表示函数的关键字
- 函数名:函数的名称,日后根据函数名调用函数
- 函数体:函数中进行一系列的逻辑计算
- 参数:为函数体提供数据
- 返回值:当函数执行完毕后,可以给调用者返回数据。
总结使用函数的好处:
1.减少代码重用
2.保持一致性,易维护
3.可扩展性
返回值
def 发送邮件(): 发送邮件的代码... if 发送成功: return True else: return False while True: # 每次执行发送邮件函数,都会将返回值自动赋值给result # 之后,可以根据result来写日志,或重发等操作 result = 发送邮件() if result == False: 记录日志,邮件发送失败...
二、参数
1.形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只在函数内部有效。函数调用结束返回主调用函数后则不能再使用该形参变量
2.实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须有确定的值,以便把这些值传送给形参。因此应预先用赋值,输入等办法使参数获得确定值
def calc(x,y) #x,y即为形参 res = x**y return res c = calc(2,3) #2,3即为实参 print(c)
3.位置参数和关键字(标准调用:实参与形参位置一一对应;关键字调用:位置无需固定)
注:位置参数必须在关键字参数前面
def calc(x,y): res = x**y return res c = calc(y=2,x=3) #关键字参数 print(c) def calc(x,y): res = x**y return res c = calc(2,y=3) #2为位置参数,y=3为关键字参数 print(c)
4.默认参数
def calc(x,y=3): #y=3为默认参数后面函数可不传值 res = x**y return res c = calc(3) #可不传y值 print(c)
5.参数组
###############列表*args def func(*args): print args # 执行方式一 func(11,22,33,55,66) # 执行方式二 li = [11,22,33,55,66] func(*li) ###############字典**kwargs def func(**kwargs): print kwargs # 执行方式一 func(name='ocean',age=18) # 执行方式二 li = {'name':'ocean', age:18, 'job':'python'} func(**li)
三、 局部变量与全局变量
全局变量在函数里可以随便调用,但要修改就必须用 global 声明
##########全局变量与局部变量######## NAME = "aa" def cn(): global NAME NAME = "mm" print(">>>>",name) print(name) #输出aa cn() #>>>mm print(name) #mm ########## #本例重点是函数只有调用时才运行 name = "aa" #全局变量一般为大写用于区分局部变量,这里临时使用小写 def aa(): name = "bb" def bb(): nonlocal name #nonlocal用来在函数或其他作用域中使用外层(非全局)变量 name = "cc" bb() print(name) print(name) aa() print(name)
递归 |
在函数内部,可以调用其他函数。如果一个函数在内部调用函数本身,这个函数就是递归函数。
递归特性:
1. 必须有一个明确的结束条件
2. 每次进入更深一层递归时,问题规模相比上次递归都应有所减少
3. 递归效率不高,递归层次过多会导致栈溢出,浪费内存
def calc(n): print(n) if int(n/2) ==0: return n return calc(int(n/2)) calc(10) 输出: 10 5 2 1
内置函数 |
###### 求绝对值 ####### a = abs(-95) print(a) ###### 只有一个为假就为假 ######## a = all([True,True,False]) print(a) ###### 只有一个为真就为真 ######## a = any([False,True,False]) print(a) ####### 返回一个可打印的对象字符串方式表示 ######## a = ascii('0x\10000') b = ascii('b\x19') print(a,b) ######### 将整数转换为二进制字符串 ############ a = bin(95) print(a) ######### 将一个数字转化为8进制 ############## a = oct(95) print(a) ######### 将一个数字转化为10进制 ############# a = int(95) print(a) ######### 将整数转换为16进制字符串 ########## a = hex(95) print(a) ######### 转换为布尔类型 ########### a = bool('') print(a) ######### 转换为bytes ######## a = bytes('淡定',encoding='utf-8') print(a) ######## chr 返回一个字符串,其ASCII码是一个整型.比如chr(97)返回字符串'a'。参数i的范围在0-255之间。 ####### a = chr(88) print(a) ######## ord 参数是一个ascii字符,返回值是对应的十进制整数 ####### a = ord('X') print(a) ######## 创建数据字典 ######## dict({'one': 2, 'two': 3}) dict(zip(('one', 'two'), (2, 3))) dict([['two', 3], ['one', 2]]) dict(one=2, two=3) ###### dir 列出某个类型的所有可用方法 ######## a = dir(list) print(a) ###### help 查看帮助文档 ######### help(list) ####### 分别取商和余数 ###### a = divmod(9,5) print(a) ##### 计算表达式的值 ##### a = eval('1+2*2') print(a) ###### exec 用来执行储存在字符串或文件中的Python语句 ###### exec(print("Hi")) exec("print(\"hello, world\")") ####### filter 过滤 ####### li = [1,2,3,4,5,6] a = filter(lambda x:x>3,li) for i in a:print(i) ##### float 浮点型 ##### a = float(1) print(a) ###### 判断对象是不是属于int实例 ######### a = 5 b = isinstance(a,int) print(b) ######## globals 返回全局变量 ######## ######## locals 返回当前局部变量 ###### name = 'nick' def hi(): a = 1 print(locals()) hi() print(globals()) ########## map 遍历序列,对序列中每个元素进行操作,最终获取新的序列。 ########## li = [11,22,33] def func1(arg): return arg + 1 #这里乘除都可以 new_list = map(func1,li) #这里map调用函数,函数的规则你可以自己指定,你函数定义成什么他就做什么操作! for i in new_list:print(i) ###### max 返回集合中的最大值 ###### ###### min 返回集合中的最小值 ###### a = [1,2,3,4,5] s = max(a) print(s) n = min(a) print(n) ####### pow 返回x的y次幂 ######## a = pow(2,10) print(a) a = pow(2,10,100) #等于2**10%100,取模 print(a) ######## round 四舍五入 ######## a = round(9.5) print(a) ######## sorted 队集合排序 ######## char=[", "a","B","nick","c" ,"A", "_", "ᒲ",'a'] new_chat = sorted(char) print(new_chat) for i in new_chat: print(bytes(i, encoding='utf-8')) ######## sum 求和的内容 ######## a = sum([1,2,3,4,5]) print(a) a = sum(range(6)) print(a) ######## __import__ 通过字符串的形式,导入模块 ######## # 通过字符串的形式,导入模块。起个别名ccas comm = input("Please:") ccas = __import__(comm) ccas.f1() # 需要做拼接时后加 fromlist=True m = __import__("lib."+comm, fromlist=True)
内置函数
匿名函数 |