代码改变世界

python--函数

2016-04-13 00:10  qing_add  阅读(504)  评论(0编辑  收藏  举报

函数的定义

def sendmail():      #####定义函数,sendmail 是由自己定义的
n = 100
n +=1
print(n)

sendmail() ######执行函数 结果为 101
f = sendmail ##将函数名赋值给f
f() ######执行函数 结果为101

下面是一个正式的函数线上能发送成功,知识生产环境需要考虑到网络发送邮件,受到网络、第三方服务器(网易的邮箱)的限制比较多
原理实现:
首先定义一个值 ret
执行try 里面的内容,成功的话,下面内容就不执行,从而返回的ret值是开始赋的True
执行try 里面的内容,不成功的话,就执行下面的内容,从而返回的ret值是开始赋的True
'''
'''
import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr
def sendmail():
ret = True
try:
msg = MIMEText('邮件内容--这是我用写程序的方式发送的邮件','plain','utf-8')
msg['From'] = formataddr(['wangshiqing','wsqnihao@126.com'])
#msg['To'] = formataddr(['wangqq','958831291@qq.com'])
msg['To'] = formataddr(['jingjing','2457272017@qq.com'])
msg['Subject'] = "主题--python程序测试"

server = smtplib.SMTP("smtp.126.com",25)
server.login("wsqnihao@126.com","Wang1@3_4")
#server.sendmail('wsqnihao@126.com',['958831291@qq.com',],msg.as_string())
server.sendmail('wsqnihao@126.com',['2457272017@qq.com',],msg.as_string())
server.quit()
except Exception:
ret = False
return ret

ret = sendmail()
if ret:
print("发送成功")
else:
print("发送失败")


# msg['To'] = formataddr(['jingjing','2457272017@qq.com'])

# server.sendmail('wsqnihao@126.com',['2457272017@qq.com',],msg.as_string())
'''
'''
def show():
print('a')
if 1 ==2:
return [11,22,33]
print('b')

ret = show()
print(ret)
'''
'''
结果是
a
b
None
重点是没有执行return 语句,默认会返回None
'''
'''
def show():
print('a')
if 1 == 1:
return [11,22,33]
print('b')

ret = show()
print(ret)
'''
'''
结果是
a
[11, 22, 33]
解释是:执行了if语句后,执行return 得到[11,22,33] 程序也中断了
'''
'''
#######程序的debug模式###
在语句的左边的灰色的位置用鼠标点,会出现红色的点,这就是程序的断点
在正常执行的按钮右边有一个debug模式的运行键。执行后,程序会正常进行,
在正常执行的反馈界面中,有一个按钮,按一下,程序会往下走一步,就会看到程序的运行调试过程。
'''

'''
######形式参数
import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr
def sendmail(user):
ret = True
try:
msg = MIMEText('邮件内容--这是我用写程序的方式发送的邮件','plain','utf-8')
msg['From'] = formataddr(['wangshiqing','wsqnihao@126.com'])
msg['To'] = formataddr(['wangqq','958831291@qq.com'])
msg['Subject'] = "主题--python程序测试"

server = smtplib.SMTP("smtp.126.com",25)
server.login("wsqnihao@126.com","Wang1@3_4")
server.sendmail('wsqnihao@126.com',[user,],msg.as_string())
server.quit()
except Exception:
ret = False
return ret

ret = sendmail('958831291@qq.com')
if ret:
print("发送成功")
else:
print("发送失败")
'''
'''
#####一个参数
def show(a1):
print(a1)
ret = show(100)
print(ret) ###结果是 100
#### None
'''
'''
######二个参数
def show(a1,a2):
print(a1,a2)
ret = show(123,999)
print(ret)
###结果是
#123 999
#None
'''
'''
########默认参数
def show(a1,a2=999):
print(a1,a2)
ret = show(123)
print(ret)
###结果是
#123 999
#None
#####默认参数1:只能放在最后,2 如果赋值的话,是以新赋的值为标准
'''
'''
#####指定参数
def show(a1,a2):
print(a1,a2)
ret = show(a2=999,a1=123)
print(ret)
'''
'''
########动态参数
#def show(*args):
# print(args,type(args))
#ret = show(11,22,33,44,55)
#print(ret)

#def show(**args):
# print(args,type(args))
#ret = show(n1='ere',n2='sffds',n3=100)
#print(ret)

def show(*args,**kwargs):
print(args,type(args))
print(kwargs,type(kwargs))

ret = show(11,22,'sdfs',33,n1='ere',n2='sffds',n3=100)
print(ret)
'''
'''
(11, 22, 'sdfs', 33) <class 'tuple'>
{'n1': 'ere', 'n2': 'sffds', 'n3': 100} <class 'dict'>
None
1 * 传入的参数之后,得到的是一个元组
2,** 传入参数后,得到的是字典,也就是说,传入的参数的形式是 ####=###
3 两种形式混合的话,* 写在前面 ** 写在后面 传入参数的时候 11,22 这种形式的也是必须写在前面
'''

'''
def show(*args,**kwargs):
print(args,type(args))
print(kwargs,type(kwargs))

l = [11,22,33,44]
d = {'n1':'abc','alex':'ef'}
#ret = show(l,d)
#print(ret)
ret = show(*l,**d)
print(ret)

print(show(l,d))的执行结果如下,是由于l,d 符合*args的情况,元组中可以包含列表和字典
([11, 22, 33, 44], {'alex': 'ef', 'n1': 'abc'}) <class 'tuple'>
{} <class 'dict'>
None

print(show(*l,**d))的执行结果如下,是明确告诉程序,自己的需求
(11, 22, 33, 44) <class 'tuple'>
{'n1': 'abc', 'alex': 'ef'} <class 'dict'>
None

'''



'''
s1 = "{0} is {1}"
#ret = s1.format('alex','2b')
#print(ret)

l = ['alex','2b']
ret = s1.format(*l)
print(ret)

s1 = "{name} is {acter}"
#ret = s1.format(name = 'alex',acter = '2b')
#print(ret)

d = {'name':'alex','acter':'2b'}
ret = s1.format(**d)
print(ret)
'''



'''
上面的内容实现“函数的动态参数实现字符串格式化”
结果都是alex is 2b
'''

####lambda 表达式 简单函数的表示方式
##创建了形式参数a
###有了函数内容,a+1 并把结果return
#def func(a):
# b = a +1
# return b
#ret = func(4)
#print(ret)

func = lambda a:a+1
ret = func(4)
print(ret)

########上面5行,和下面三行 表达的意思是一样的。


#########内置函数#########
###内置函数有哪些
'''
abs() 绝对值
all() 判断序列(列表、元组、字典)中元素是否全部为真
假的 None 空字符串、空元组、空字典、空元组
any() 判断只要一个元素为真,返回值就是真的
bool(None) #判断元素的布尔值

ascii() ascii 码
bin() 二进制
bytearray() 转换为字节数组
>>> bytearray("fsdfsfsdfds",encoding='utf-8')
bytearray(b'fsdfsfsdfds')

callable() 是否可执行
>>> f = lambda x: x+1
>>> callable(f)
True
>>> f(6)
7

chr() 数字转为ascii
ord() ascii 转为数字
一般应用场景,生成验证码
>>> import random
>>> random.randint(1,99)
75
>>> random.randint(1,99)
68
>>> random.randint(1,99)
37
>>> chr(78)
'N'

compile() 编译
delattr() 发射
dict() 字典
dir() 所有变量所有key
divmod()
enumerate()
>>> li = ['alex','yy','zz']
>>> for i in li:print(i)
...
alex
yy
zz
>>> for i,item in enumerate(li,1):print(i,item)
...
1 alex
2 yy
3 zz
###enumerate 从1 开始自增加

eval()
filter() 通过map() 函数处理得到原来列表符合要求的值的一个新列表
map() 通过map() 函数处理得到原来列表所有值的一个新列表
11:34
>>> li = [11,22,33,44]
>>> map(lambda x:x+100,li)
<map object at 0x0050B990>
>>> new_li = map(lambda x:x+100,li)
>>> for i in new_li:print(i)
...
111
122
133
144

>>> li = [11,22,33,44]
>>> def foo(a):
... if a>33:
... return True
... else:
... return False
...
>>> new_li2 = filter(foo,li)
>>> list(new_li2)
[44]


float()
format()

getattr()

frozenset() 冻结set
set()

globals() 当前全局变量
locals() 局部变量

hash()

help()
hex() 十六进制 0x 表示
oct() 八进制 0o表示

max()
min()
sum()

pow
range() 区间 17:40
>>> i = range(1,10)
>>> for a in i:print(a)
...
1
2
3
4
5
6
7
8
9


reversed()反转
round() 四舍五入

slice() 切片
sorted() 排序
str() 字符串



super()
vars() dir 所有的key

zip() ###混合,得到一个列表
>>> x = [1,2,3]
>>> y = [4,5,6]
>>> zipped = zip(x,y)
>>> list(zipped)
[(1, 4), (2, 5), (3, 6)]

'''


###########open 函数
#f = open("test.log",'w','encoding=utf-8')
##f.write('abcdefg')
#f.close()
#print(f)


f = open('test.log','w')
f.write('abcdefg')
f.close()
print(f)