函数是一组语句的集合,用以实现某一特定功能。函数可简化脚本,函数包括内置函数与自定义函数

    自定义函数框架

        在python中使用def 可以声明一个函数,完整的函数是由函数名,参数,函数体,返回值。声明函数一般形式如下

def 函数名 (参数)
    函数体
    return 返回值

    参数和返回值不是必须的 当没有设置返回值的时候,该函数的返回值默认是null


    函数调用

        在python 中自定义函数与内置函数调用方法相同,只要使用函数名制定要调用的函数,然后再函数后加相应的参数即可,如果有多个参数,则不同的参数要以“,”分开。函数调用必须在申明一个函数之后才能调用

    函数中的参数分类

        默认参数

            在python中,可以在声明函数时,预先为参数设置一个默认值。当调用函数时,如果某个参数,具有默认值,则可以不向函数传递该参数

def fun(x=5)
    rerurn x**3
cube(2)    定义参数时 传递参数
8
cube()     没有定义参数时,使用默认参数
125

        指定参数

            如果一个函数具有多个参数,并且这些参数都具有默认值,在调用函数的时候,可能仅想向最后一个参数传递值可以设置

def fun(x=1,y=2,z=3):
    return(x+y-z)**3
fun(0)
-1
fun(3,3)
27
fun(none,none,5)
-8

fun(x=2,y=3,z=5)        指定具体值,即为指定参数

        动态参数 

            *默认输入的参数,全部放置在元祖中

def fun(*args:)
    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的值[2,3,4]


def fun(x):        声明一个函数
    global a        使用global 关键字声明全局变量
    return a+x        
    
a=5            
fun(3)        调用函数
8
a=2
fun(3)        修改a的值
5

默认定义全局变量 全部大写
局部变量        全部小写


    三元运算

    if 1==1:
        name="alex"
    else:
        name="SB"
        
 name="alex" if 1==1 else "SB"

    最简单的函数 :用lambda 表达式

        用lambda 适用于定义一个小型的函数,在函数中仅能包含单一的参数表达式,而不能包含其他的语句。在lambda 中也可以调用其他的函数。

def fun():
    print ('lambda')

f= lambda: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()        当any的参数里只要有真 即为真
    f=[11,0]
    any(f) 为turn

转换进制的函数        
def bin()    把接收的值转换成相应的2进制
def oct()    把接受的值转换成相应的8进制
def hex()    把接受的值转换成16相应的进制

转换字节类型,按照什么编码:
def bytes()
    n=bytes(s,encoding="utf8")
    n=bytes(s,encoding="gbk")
   
判断对象能不能被调用   如果可以返回Trun
def callable()

数字与字母之间的转换 基于ascii码
def chr()    #数字转化字母
def ord()    #字母转换数字

    随机产生数字 random模块
        import random
            i=random.randrange(1,5)
            print(i)
            随机产生数字
    验证码实例
        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)
    Trun
    
    
def filter()        #循环第二个个参数,让每个循环元素执行函数,如果函数返回值Trun,表示                        元素合法
    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 locals()    获取所有的局部变量

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()    切片的功能

def zip()
    l1=["alex",11,22,33]
    l2=["is",11,22,33]
    l3=["sb",11,22,33]
    r=zip(l1,l2,l3)
    print(r)
    t=[("alex","is","sb"),(11,11,11)(22,22,22)(33,33,33)]
    j="" jion(t[0])
发邮件实例
import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr
  
  
msg = MIMEText('邮件内容', 'plain', 'utf-8')
msg['From'] = formataddr(["杜邱",'550849763@qq.com'])
msg['To'] = formataddr(["走人",'646772534@qq.com'])
msg['Subject'] = "主题"
  
server = smtplib.SMTP("smtp.qq.com", 25)
server.login("550849763@qq.com", "邮箱密码")
server.sendmail('550849763@qq.com', ['646772534@qq.com',], msg.as_string())
server.quit()

发送邮件实例