Python 函数之定义函数
在Python中,定义一个函数要使用def语句,依次写出函数名、括号、括号中的参数和冒号:
然后,在缩进块中编写函数体,函数的返回值用return语句返回。
1、定义一个函数
def myfirst():
print("Hello world!") myfirst() #输出结果
Hello world!
2、定义发送邮件的函数
# 不接收用户指定邮箱的函数 #!/usr/bin/env python
# -*- conding:utf-8 -*-
import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr def mail():
msg = MIMEText('邮件内容', 'plain', 'utf-8')
msg['From'] = formataddr(["evescn", '18111434862@163.com'])
msg['To'] = formataddr(["gmkk", '519518995@qq.com'])
msg['Subject'] = "主题" server = smtplib.SMTP("smtp.163.com", 25)
server.login("18111434862@163.com", "XXXXXX")
server.sendmail('18111434862@163.com', ['519518995@qq.com', ], msg.as_string())
server.quit() mail()
不接收用户指定邮箱
# 用户可以指定邮箱的函数 #!/usr/bin/env python
# -*- conding:utf-8 -*-
import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr def mail(mails):
msg = MIMEText('邮件内容', 'plain', 'utf-8')
msg['From'] = formataddr(["evescn", '18111434862@163.com'])
msg['To'] = formataddr(["gmkk", mails])
msg['Subject'] = "主题" server = smtplib.SMTP("smtp.163.com", 25)
server.login("18111434862@163.com", "XXXXXX")
server.sendmail('18111434862@163.com', [mails, ], msg.as_string())
server.quit() mail('519518995@qq.com')
用户可以指定邮箱
3、函数的参数个数
- 无参
- 一个参数
- 两个参数
- ……
- 动态参数
4、举例
# 无参函数
def show():
print('a')
return [11, 22, ]
print('b') show() # 输出结果
a
# 一个参数
def show(arg):
print(arg) n = [11, 22, 33, 44]
show(n) # 输出结果
[11, 22, 33, 44]
# 两个参数
def show(arg, xxx):
print(arg, xxx) show('evescn', 'gmkk') # 输出结果
evescn gmkk
# 默认参数,必须写在实参之后
def jiecheng(arg, n=2):
print(arg ** n) jiecheng(2)
jiecheng(2, 3) # 输出结果
4
8
# 指定参数
def show(a1,a2):
print(a1,a2) show(123, 999)
show(a2=123, a1=999) # 输出结果
123 999
999 123
# 动态参数
# 传入参数为列表 OK?
def show(*arg): # 把所有参数转为了元组
print(arg, type(arg)) show(1,2,3,4,5,6,7,8) # 输出结果
(1, 2, 3, 4, 5, 6, 7, 8) <class 'tuple'>
# 动态参数
# 传入参数为字典 OK?
def show(**arg): # 把所有参数转为了字典
print(arg,type(arg)) show(n1=1,n2=2,n3=3,n4=4,) # 输出结果
{'n4': 4, 'n3': 3, 'n1': 1, 'n2': 2} <class 'dict'>
# 实参、一个*的动态参数、两个*的动态参数
# 定义是先放变量,在放一个*的参数,在放**的参数
def show(a1, *args, **kwargs):
print(a1)
print(args, type(args))
print(kwargs, type(kwargs)) show(11, 22, 33, 44, n1=99, n2=88, n3=77) # 输出结果
11
(22, 33, 44) <class 'tuple'>
{'n3': 77, 'n1': 99, 'n2': 88} <class 'dict'>
# 仔细对比2次的输出结果,对于创建的列表和字典,传给函数时需指定传递给那个变量
def show(*args, **kwargs):
print(args,type(args))
print(kwargs, type(kwargs)) a1=[11, 22, 33, 44]
a2={'n1': 99, 'n2': 88, 'n3': 77}
show(a1, a2)
show(*a1, **a2) #输出结果
([11, 22, 33, 44], {'n3': 77, 'n2': 88, 'n1': 99}) <class 'tuple'>
{} <class 'dict'> (11, 22, 33, 44) <class 'tuple'>
{'n3': 77, 'n2': 88, 'n1': 99} <class 'dict'>
# format函数,如何给farmat函数传递参数
s1 = "{0} to {1}"
l = ['evescn','gmkk']
ret1 = s1.format(*l)
ret2 = s1.format('evescn','gmkk') print(ret1)
print(ret2) s1 = "{name} to {acter}"
l = {'name':'evescn', 'acter':'gmkk'}
ret1 = s1.format(**l)
ret2 = s1.format(name='evescn', acter='gmkk') print(ret1)
print(ret2) # 输出结果
evescn to gmkk
evescn to gmkk
evescn to gmkk
evescn to gmkk
Python 函数之定义函数的更多相关文章
- 大一C语言学习笔记(5)---函数篇-定义函数需要了解注意的地方;定义函数的易错点;详细说明函数的每个组合部分的功能及注意事项
博主学习C语言是通过B站上的<郝斌C语言自学教程>,对于C语言初学者来说,我认为郝斌真的是在全网C语言学习课程中讲的最全面,到位的一个,这个不是真不是博主我吹他哈,大家可以去B站去看看,C ...
- Python(调用函数、定义函数)
函数的返回值: return 值:只能返回一次,只要执行return函数就终止 返回值:没有类型限制,也没有个数限制 没有return:None 返回一个值 返回多个值:元组 先定义,后使用,定义阶段 ...
- Python基础笔记:函数:调用函数、定义函数、函数的参数、递归函数
一.定义一个求二元一次方程的根的函数 #Sublime Text import math def ee(a,b,c): delta=b*b-4*a*c if delta<0: return 'n ...
- python通过字符串定义函数名
记录python里的一个有意思的小技巧:通过字符串定义函数名称. import sys m=sys.modules[__name__] def temp(x): return x+1 setattr( ...
- python -- 初始函数 函数的定义,函数的返回值以及函数的参数
1.什么是函数,函数的定义及语法 2.函数的返回值 3.函数的参数 一.函数的定义及语法 函数的定义:定义了一个动作或者功能,是对功能的封装 语法: def 函数名( 形参列表 ): ...
- javascript函数 (二 定义函数的三种方法)
javascript定义函数(声明函数)可以有三种方法:正常方法.构造函数.函数直接量 <html><head></head><body> <sc ...
- Python入门--11--自定义函数
使用def定义自定义函数 举个栗子: def myfristFunction(): print "we are 伐木累!" #输入myfristFunction() 会输出:we ...
- Python 循环与定义函数
break for i in range(10): if i == 2: break print i 0 1 continue for i in range(10): if i == 2: conti ...
- C# 中函数内定义函数的委托方法
//定义委托方法Action(无返回值)Func(有返回值) //无返回值委托 Action<string> SetKeyAndValue = delegate(string key) { ...
随机推荐
- Xib与Storyboard相关知识点
相同点 都用来描述软件界面 都用Interface Builder工具来编辑 本质都是转换成代码去创建控件 不同点 Xib是轻量级的,用来描述局部的UI界面 Storyboard是重量级的,用来描述整 ...
- 默认连接电脑的模式为MTP【转】
本文转载自:https://blog.csdn.net/tangzhihai0421/article/details/53487208 Android L后默认的usb连接模式为“仅充电”,而且不会随 ...
- CentOS 7 导入epel库
yum install epel-release 或者到百度云下载相应的 rpm 包进行安装 rpm -ivh epel-release-7-9.noarch.rpm
- sql server deadlock problem
https://www.red-gate.com/simple-talk/sql/learn-sql-server/how-to-track-down-deadlocks-using-sql-serv ...
- java JSON 序列化类(List<Object> 转String)
import com.alibaba.fastjson.JSONObject; import com.google.common.base.Preconditions; import com.goog ...
- nginx流量全copy记录
参考:http://tyrion.iteye.com/blog/2311987 准备两台服务器: 0.0.0.1 0.0.0.2 在 0.0.0.1上 . 下载 wget https://github ...
- 在eclipse中使用Github进行单元测试
时间分配是找资料60%,动手实践40%.因为之前一直没怎么好好学习,导致看到使用Gunit进行单元测试的时候感觉像是看到了一行符号一样不知所措,还好现在搜索引擎很强大,找资料学习中间有找到一个现成的傻 ...
- xenapi-add-support-for-vgpu
Model types 为了在vm中支持vgpu,问题在于vgpu是否应该被当作一个PCI设备, 虽然物理GPU不是一个SR-IOV设备,但vgpu却是以一个类似SR-IOV device上的VF赋给 ...
- hdu6242 计算几何
题意:给你n个点,要求找到一个点,和一个圆心,使得有n/2向上取整个点在圆上,一定有满足条件的点存在 题解:既然一定有解,而且圆上有n/2向上取整个点,那么我们可以通过随机来找三个点来确定一个圆心,和 ...
- hdu 5240 Exam(贪心)
Exam Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...