Python学习(二):函数入门
1、函数代码格式:
def 函数名():
函数内容
执行函数:函数名()
2、代码举例:
#!/usr/bin/env python
#coding=utf-8
#定义函数
def Func1():
a = 1
b = 2
print(a+b)
#执行函数
Func1()
执行结果:3
3、函数返回值:
#!/usr/bin/env python
#coding=utf-8
#导入邮件模块
import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr
#定义发邮件函数
def SendMail():
#定义默认发送结果参数为True
SendResult = True
#异常处理
try:
#邮件头设置
SendMailMsg = MIMEText('这是一个邮件','plain','utf-8')
SendMailMsg['From'] = formataddr(['Dukuan','邮箱账号'])
SendMailMsg['To'] = formataddr(['DK','接收账号'])
SendMailMsg['Subject'] = '发送主题'
#邮件服务器设置
MailServer = smtplib.SMTP(')
MailServer.login('邮箱账号','邮箱密码')
MailServer.sendmail('邮箱账号',['接收账号',],SendMailMsg.as_string())
MailServer.quit()
except Exception:
#代码执行错误赋值False给SendResult
SendResult = False
#返回SendResule值
return SendResult
#执行函数,接收函数返回值
SendResult = SendMail()
if SendResult:
print("发送成功")
else:
print("发送失败")
代码示例
注意:return后面如果有代码不执行,return终结函数。
4、函数参数:
4.1 普通参数
#!/usr/bin/env python
#coding=utf-8
#导入邮件模块
import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr
#定义发邮件函数,且定义ReciverMail参数
def SendMail(ReciverMail):
#定义默认发送结果参数为True
SendResult = True
#异常处理
try:
#邮件头设置
SendMailMsg = MIMEText('这是一个邮件','plain','utf-8')
SendMailMsg['From'] = formataddr(['Dukuan','发件邮箱'])
SendMailMsg['To'] = formataddr(['DK',ReciverMail])
SendMailMsg['Subject'] = '发送主题'
#邮件服务器设置
MailServer = smtplib.SMTP(')
MailServer.login('发件邮箱','密码')
MailServer.sendmail('发件邮箱',[ReciverMail,],SendMailMsg.as_string())
MailServer.quit()
except Exception:
#代码执行错误赋值False给SendResult
SendResult = False
#返回SendResule值
return SendResult
#执行函数,将SendMail里面的内容赋值给ReciverMail
SendResult = SendMail('参数')
if SendResult:
print("发送成功")
else:
print("发送失败")
4.2 默认参数
默认参数就是在定义函数参数时加一个默认值,执行函数时可不赋值,赋值时就会覆盖默认值。
#!/usr/bin/env python
#coding=utf-8
def FuncOne(arg1,arg2=666):
return arg1,arg2
Result = FuncOne(123,789)
print(Result)
4.3 指定参数
执行函数赋值时加上参数名直接给对应的参数赋值。
#!/usr/bin/env python
#coding=utf-8
def FuncOne(arg1,arg2=666):
return arg1,arg2
Result = FuncOne(arg2=123,arg1=789)
print(Result)
4.4 动态参数
一个*号是元组,两个参数字典,函数动态参数赋值时顺序保持一致。
#!/usr/bin/env python
#coding=utf-8
def FuncOne(*arg1,**arg2):
return arg1,arg2
Result = FuncOne(1,2,3,4,5,6,7,a=1,b=2,c='dd')
print(Result)
也可直接将列表、元组和字典赋值给动态参数,但是赋值时要加*或**,否则会全部赋值给元组参数
#!/usr/bin/env python
#coding=utf-8
def FuncOne(*arg1,**arg2):
return arg1,arg2
#l = (1,2,3,4,5,6,7,)
l = [1,2,3,4,5,6,7,]
d = {'a':'a','b':'b',}
Result = FuncOne(*l,**d)
#Result = FuncOne(1,2,3,4,5,6,7,a=1,b=2,c='dd')
print(Result)
#注意:如果赋值给元组参数时,赋值前面不加*号,会将列表l当做一个值赋值给元组参数
4.5 使用动态参数实现字符串格式化
#!/usr/bin/env python
#coding=utf-8
StrOne = "{} 在 {}"
l = ['dk','BJ']
Res = StrOne.format(*l)
#上述方法等同于Res = StrOne.format('dk','BJ')
print(Res)
#打印结果为"dk 在 BJ"
StrTwo = "{name} 在 {city}"
d = {'name':'dk','city':'BJ'}
Res = StrTwo.format(**d)
#上述方法等同于Res = StrTwo.format(name='dk',city='BJ')
print(Res)
#打印结果为"dk 在 BJ"
5、lambda表达式:
#!/usr/bin/env python #coding=utf-8 LamOne = lambda a:a+1 Res = LamOne(7) print(Res)
相当于创建一个函数,a是形式参数,a+1是函数内容,执行时将7赋值给a,然后返回a+1的值
6、内置函数:
内置函数:
help() 查看帮助
dir() 列出所有的支持key
vars() 列出所有的支持key和值
type() 查看类型
import temp 导入模块
reload(temp)
id() 查看id
abs() 取绝对值
bool() 布尔值
divmod(7,10) 得到的结果是0 7
divmod 是7除以10等于0.7 0代表结果的整数,7代表余数
sum() 统计结果
pow(2,10) 2的十次方
all() 所有为真返回真
any() 有一个为真返回真
print all([1,2,3,4]) -- True
print any([1,0,0,0]) -- False
chr() 查看acsll码对应的字符串
ord() 查看字符串对应的ascll码
hex() 16进制
oct() 8进制
bin() 2进制
round() 四舍五入
floor() 取整,需要import math
sqrt() 开根号
map表达式:
map(函数,序列)
map是将值赋值给函数
例如:
li = [10,20,30]
print(map(lambda arg:arg+100,li))
分别将li的10 20 30 赋值给函数,也就是lambda arg:arg+100
最后输出结果是110 120 130
filter表达式:过滤
li = [10,21,31]
def foo(arg):
if arg < 22:
return True
else:
return False
print(list(filter(foo,li)))
结果是10 21,将li序列的值赋值给foo函数,如果返回真则打印。
zip表达式:
a = [1,2,3,4]
b = ['d','a','v','d']
c = [1,2,3,54]
print zip(a,b,c)
结果[(1, 'd', 1), (2, 'a', 2), (3, 'v', 3), (4, 'd', 54)]
将他们同位都合并成组,如果有一个集合的值少于其他集合,那么以集合少的为准
random.random() 产生随机数
random.randint(1,2) 产生1和2其中一个
random.randrange(1,10)产生1-9其中一个
其他函数
Python学习(二):函数入门的更多相关文章
- python学习笔记--Django入门四 管理站点--二
接上一节 python学习笔记--Django入门四 管理站点 设置字段可选 编辑Book模块在email字段上加上blank=True,指定email字段为可选,代码如下: class Autho ...
- Python学习二:词典基础详解
作者:NiceCui 本文谢绝转载,如需转载需征得作者本人同意,谢谢. 本文链接:http://www.cnblogs.com/NiceCui/p/7862377.html 邮箱:moyi@moyib ...
- Python进阶(二)----函数参数,作用域
Python进阶(二)----函数参数,作用域 一丶形参角度:*args,动态位置传参,**kwargs,动态关键字传参 *args: 动态位置参数. 在函数定义时, * 将实参角度的位置参数聚合 ...
- python学习8—函数之高阶函数与内置函数
python学习8—函数之高阶函数与内置函数 1. 高阶函数 a. map()函数 对第二个输入的参数进行第一个输入的参数指定的操作.map()函数的返回值是一个迭代器,只可以迭代一次,迭代过后会被释 ...
- python学习7—函数定义、参数、递归、作用域、匿名函数以及函数式编程
python学习7—函数定义.参数.递归.作用域.匿名函数以及函数式编程 1. 函数定义 def test(x) # discription y = 2 * x return y 返回一个值,则返回原 ...
- Python学习笔记 - 函数参数
>>> def power(x): ... return x * x ... >>> power(5) 25 >>> def power(x, n ...
- 从0开始的Python学习007函数&函数柯里化
简介 函数是可以重用的程序段.首先这段代码有一个名字,然后你可以在你的程序的任何地方使用这个名称来调用这个程序段.这个就是函数调用,在之前的学习中我们已经使用了很多的内置函数像type().range ...
- python学习Day10 函数的介绍(定义、组成、使用)
今日学习内容: 1.什么是函数 :函数就是一个含有特定功能的变量,一个解决某问题的工具 函数的定义:通过关键字def + 功能名字():代码体(根据需求撰写代码逻辑) 2.为什么要用函数:可以复用:函 ...
- Python学习之函数参数
上一节,我们学习了Python中是如何定义和调用函数且如何得到返回值的.在调用函数时,有的函数需要参数来启动函数,有的则无需参数.这一节我们来介绍Python中有哪些参数类型. 位置参数 在调用函数时 ...
- Python学习笔记—函数
函数 我们知道圆的面积计算公式为: S = πr2 当我们知道半径r的值时,就可以根据公式计算出面积.假设我们需要计算3个不同大小的圆的面积: r1 = 12.34 r2 = 9.08 r3 = 73 ...
随机推荐
- [特斯拉组件]ios高性能PageController
本文来自于腾讯Bugly公众号(weixinBugly),作者:sparrowchen,未经作者同意,请勿转载,原文地址: http://mp.weixin.qq.com/s/hBgvPBP12IQ1 ...
- 如何清除PHP中不需要的Layout模板
最简单的办法就是在需要清除的静态页的最前端加上 {__NOLAYOUT__} 就可以清除所有的layout效果, 继而设置自己的css.js效果.
- Docker 使用教程
概括 Docker与传统虚拟机的区别 与传统虚拟机的区别 Docker的安装 的安装 Docker daemon , client , containerd 镜像与容器操作 容器运 ...
- nginx 配置入门
之前的nginx配置是对nginx配置文件的具体含义进行讲解,不过对于nginx的新手可能一头雾水. 今天看到个文档不错,翻译过来分享给大家,可以让新手更详细地了解nginx配置,可以说是nginx配 ...
- 《图解Spark:核心技术与案例实战》作者经验谈
1,看您有维护博客,还利用业余时间著书,在技术输出.自我提升以及本职工作的时间利用上您有没有什么心得和大家分享?(也可以包含一些您写书的小故事.)回答:在工作之余能够写博客.著书主要对技术的坚持和热爱 ...
- react-native从开始趟的坑
好多天没更了..... 之前用的华为手机老人机真机调试的,最近几天换了小米,又遇上了坑... 跟之前所有手机一样打开开发者模式,开发者模式是(关于手机--版本号---一直点啊点--退出---辅助功能里 ...
- Js中for循环的阻塞机制
Js阻塞机制,跟Js引擎的单线程处理方式有关,每个window一个JS线程.所谓单线程,在某个特定的时刻只有特定的代码能够被执行,并阻塞其它的代码. 由于浏览器是事件驱动的(Event driven) ...
- 分布式系统中的必备良药 —— RPC
阅读目录 前言 成熟的解决方案 剖析 性能测试 结语 一.前言 在上一篇分布式系统系列中<分布式系统中的必备良药 —— 服务治理>中阐述了服务治理的一些概念,那么与服务治理配套的必然会涉及 ...
- C语言简单实现链栈基本几个功能(适合新手看,大神可指正)
接着上一次的顺序栈,今天我记一下链栈,因为我也是刚学不久,有些地方也稍稍理解不了,所以,一起共勉.我会用我自己结合教材上画的图,争取跟代码一起结合,用文字和图最大化的解释代码,这样的话 ...
- 采用Opserver来监控你的ASP.NET项目系列(二、监控SQL Server与Asp.Net项目)
前言 之前有过2篇关于如何监控ASP.NET core项目的文章,有兴趣的也可以看看. 今天我们主要来介绍一下,如何使用Opserver监控我们的SQL Server 和ASP.NET项目的异常监控 ...