函数

 

深拷贝

1.对于数字、字符串而言,赋值、浅拷贝、深拷贝都无意义,因为永远都指向一个内存地址(pyrhon内部对数字和字符串优化)

2. 列表、字典

   浅拷贝:只拷贝最外层

  深拷贝:除了最内层的(数字、字符串)不拷贝外,全部拷贝

 

 

 

程序从上到下运行遇到关键字 (如def  名字XX()) 不继续执行 会把代码放到名为XX的内存中去,直接跳过运行到while True 如果遇到XX就会调用内存中

名为XX的地址 运行一次,以此类推。

def email ():

     print("我要发邮件了")

     return "123"

s= email()

print(s)

#执行函数

#函数return后面是什么值,s等于返回值,如果没值 默认None

函数返回值:return (一旦遇到return,函数内部return以下的代码就不运行了)

def email():
if True:
return True
else:
return False
s=email()
if s:
print("好")
else:
print("不好")

参数:p为形式参数,s1 s2为实际参数。

def Kauai(p):
if p=="123":
return True
else:
return False
s1 = Kauai("123")
s2 = Kauai("1256")
if s2:
print("好")
else:
print("不好")

 

#发送邮件
def email(p,text):
import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr
ret= True
try:
msg = MIMEText("text","plain","utf-8")
msg["From"] = formataddr(["武沛齐","wptawy@126.com"])
msg["To"] = formataddr(["幻落瞳","1484029127@qq.com"])
msg["Subject"]= "主题"

server =smtplib.SMTP("smtp.126.com",25)
server.login("wptawy@126.com" , "WW.3945.59")
server.sendmail("wptawy@126.com" ,[p,], msg.as_string())
server.quit()
except:
#如果上述try中的代码出现错误,自动执行except中的代码
ret= False
return ret

email ("1484029127@qq.com","ok")

形参有几个,实参就应该有几个 数量一致,一一对应(默认是按照顺序)

指定形参传入实参,可以不按照顺序例如func1(p="xx",a="xxxxx")#指的是实参

函数可以有默认参数,但是有默认值得参数一定要放在参数的尾部。
def drive(p,name="刘飞"):
temp = name +"开车去东北"
return temp
ret = drive(11,"刘")
print(ret)
ret = drive(11)
print(ret)
动态参数:
def f1(p,b,*a,**aa):     #一个*默认为元组类型,二个**默认为字典类型
print(p,type(p)) #默认为int
print(b, type(b)) #默认为int
print(a,type(a)) #默认为tuple
print(aa,type(aa)) #默认为dict
f1(11,22,33,44, k1=123,k2=123)
为动态参数传入列表、字典、元组
*args, *列表
**kwargs , **字典
# def f1(*args):
# print(args,type(args))
# li=(11,22,33)
# f1(li,123,256) # args=((11,22,33),123,256)
# f1(*li,123,256) # args= (11,22,33,123,256)

def f1(**kwargs):
print(kwargs,type(kwargs))
dict={"k1":"123","k2":"256"}
f1(k1=dict) #kwargs={"k1":{"k1":"123","k2":"256"}}
f1(**dict,k3=789) # kwargs={"k1":"123","k2":"256","k3":"789"}

全局变量和局部变量:全局变量:全部函数都能调用,全局变量是不可修改,想要修改全局变量就用global关键字,如果没有global关键字
会默认在函数里面又创建了一个局部变量。
局部变量:只能在该函数里面用,其他函数不能调用。
                 全局变量都大写,局部变量都小写(行业默认)
PERSON="liu"
def func1():
a=123
global PERSON
PERSON="yuan"
print(a)
print(PERSON)
def func2():
a=456
print(PERSON)
print(a)
func1()
func2()
输出结果:

               123
              yuan
              yuan
              456


PERSON="liu"
def func1():
a=123
# global PERSON
PERSON="yuan"
print(a)
print(PERSON)
def func2():
a=456
print(PERSON)
print(a)
func1()
func2()

输出结果

123
yuan
liu
456





posted @ 2019-02-19 16:38  幻落之瞳  阅读(237)  评论(0编辑  收藏  举报