Python函数的说明与运用python
函数定义:app
函数是一组语句的集合,用以实现某一特定功能。函数可简化脚本,函数包括内置函数和自定义函数框架
自定义函数框架:dom
在python中使用def能够声明一个函数,完整的函数是由函数名,参数,函数体,返回值。ide
声明函数的形式以下:函数
def 函数名 (参数) 函数体 return 返回值
注意:参数和返回值不是必须的,当没有设置返回值的时候,该函数的返回值默认是nullui
函数调用编码
在python中自定义函数与内置函数调用方法相同,只要使用函数名制定要调用的函数,而后再用函数后加相应的参数便可,若是有多个参数,则不一样的参数要以“,”分开。函数调用必须在申明一个函数以后才能调用。spa
函数中的参数分类orm
默认参数
在python中,能够在声明函数时,预先为参数设置一个默认值。当调用参数时,若是某个参数,具备默认值,则能够不向函数传递该参数
def fun(x=5) return x**3 print (fun(2)) 8 print (fun()) 125
指定参数
若是一个函数具备多个参数,而且这些参数都具备默认值,在调用函数的时候,可能第一个参数传递值能够设置
def fun(x=1,y=2,z=3): return(x+y-z)**3 print (fun(2)) 1 print (fun(3)) 8 print (fun(3,3)) 27
动态参数
*默认输入的参数,所有放置在元组中
def fun(*arg:) print (args) fun (11,22) (11,22)
**默认输入的参数,所有放置在字典中
def fun(**args): print(args) fun(k1=11,k2=22) {k1:11,k2:22}
在同时有一个*和两个*的时候,定义默认参数时一个*必定要在前面
def fun(*args,**qwargs): print(args) print(qwargs) fun(22,33,k1=22,k2=33) (22,33) {'k2':33,'k1':22}
在python中格式化输出%s与%d,函数中也有格式话输出format()
s="i am {0},age{1}".format("alex",18) s="i am {0},age{1}".format(*["alex",18]) s="i am {name},age{age}".format(name="alex",age=18) s="i am {0},age{1}".format(**dic) s="i am alex,age 18" #输出结果
变量的做用域
在python脚本中,不一样的函数能够具备相同的参数名,在函数中已经声明过变量名,在函数外还能够继续使用,而在脚本运行过程当中,其值并不相互影响
在python中,做用域能够分为内置做用域和全局做用域和局部做用域,内置做用域是python预先定义的,全局做用域是所编写的整个脚本,局部做用域是某个函数内部范围
若是函数中使用函数外的变量,则能够在变量名前使用global关键字
def fun(x): #声明一个函数 a=[1] #定义一个名为a的列表 a.append(x) print(a) a=[2,3,4] #在函数外定义一个名为a的列表 fun(2) [1,2] a #输出a的值
def fun(x): #声明一个函数 global a return a+x a=5 fun(3) 8 a=2 fun(3) 5
默认定义的全局变量所有大写,局部变量所有小写
三元计算:
if 1==1:
name="john"
else:
name="hehe"
name="john" if 1==1 else "hehe"
最简单的函数:用lambda表达式
用lambda适用于定义一个小型的函数,在函数中仅能包含单一的参数表达式,而不能包含其余的语句。在lambda中也能够调用其余的函数。
def fun(): print ('lambda') f= lamdba:fun() f() lambda def f1(a1): return a1+100 f2=lambda a1:a1+100 #lambda参数:函数体 ret=f1(10) print(ret)
内置函数:
取绝对值
def abs() f=abs(-1) f=1
判断真假的函数
def all() #当all的参数里所有为真时,all()为真,当all里有一个参数为假时,即为假 f= [11,22] all(f)为turn f=[11,0] all(f)为false def any() f=[11,0] any(f)为turn
按照编码,转换字节类型
def byte() n=bytes(s,encoding="utf8") n=bytes(s,encoding="gbk")
判断对象能不能被调用 若是能够返回Turn
def callable()
基于ascii码数字与字母之间的转换
def chr() #数字转换字母 def ord() #字母转换数字
随机产生数字 random模块
import random li=[] for i in range(6): r=random.randrange(1,5) if r==2 or r==4 num=random.randrange(0,10) li.append(str(num)) else: temp=random.randrange(65,91) c=chr(temp) li.append(c) result = "".join(li) print(result)
def compile() 编译代码 def eval() 接收字符串 将把字符串变成一个表达式执行 S=8*8 ret=eval(s) print(ret) 64
def exec() 执行代码
def delattr getattr
def dict() 字典 def dir() 快速获取对象类提供功能 def divmod(100,10)返回元组 元组的元素为商和元组 def isinstance()判断元素是否属于实例或类 a="li" r=isinstance(a,str) print(r) Turn
def filter() #循环第二个参数,让每一个循环元素执行函数,若是函数返回值Turn,表示 filter (函数,可迭代的类) def f2(a): if a>22: return True 函数也可使用lambda表达式写入 好比F2=lambda a: a>33.带入 li=[11,22,33,44,55] filter(lambda a: a>33,li) ret=filter(f2,li) print(list(li))
def map() #循环第二个参数 让每一个元素循环执行 函数fa,返回结果 map(函数,可迭代) li=[11,22,33,44,55] def fa(a) return a+100 result=map(f2,li) print(result)
def float() 将字符串修改为格式化 def format() 字符串格式化 def frozenset() 不可变集合
def globals() 获取全部的全局变量 def local() 获取全部的局部变量
def hash() 生成哈希值 def id() 查看内存地址 def iter() 建立迭代器 def len() 查看长度
def max() 求最大值 def min() 求最小值 def sum() 求和
def paw() 平方 t=paw(2,10) print(t) 1024
def reversed() 使可迭代参数翻转 def round(1,8) 使数字四舍五入 2 def slice() 切片的功能
发邮件
import smtplib from email.mime.text import MIMEText from email.utils import formataddr msg = MIMEText('邮件内容','plain','utf-8') msg['From'] = formataddr(["发件",'975910711@qq.com']) msg['To'] = formataddr(["收件",'975910711@qq.com']) msg['Subject'] = "主题" server = smtplib.SMTP("smtp.qq.com".25) server.login("1343612327@qq.com","邮箱密码") server.sendmail('1343612327@qq.com',['975910711@qq.com',],msg.as_string()) server.quit()