python--函数
2016-04-13 00:10
573 查看
函数的定义
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)
相关文章推荐
- Python def函数的定义、使用及参数传递实现代码
- python浓缩(11)函数和函数式编程
- python浓缩(12)模块
- Python任务调度模块 – APScheduler
- 使用PyInstaller将Python程序打包成一个单独的exe文件
- Python 入门学习
- Python正则表达式中元字符的转义处理
- python安装第三方库
- python 实现 netcat
- WIN7_X64 安装Python2.7.11
- PHP vs Python
- 升级完python2.7.11后问题
- 每天一篇python:系统篇
- python爬虫——根据指定关键词爬取新浪微博
- ArcGIS Desktop python Add-in 创建一个插件
- python子进程模块subprocess详解与应用实例 之一
- 关于python中字典的一些总结
- 关于python中字典的一些总结
- 关于python中字典的一些总结
- python中使用fork创建新的进程