在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 函数之定义函数的更多相关文章

  1. 大一C语言学习笔记(5)---函数篇-定义函数需要了解注意的地方;定义函数的易错点;详细说明函数的每个组合部分的功能及注意事项

    博主学习C语言是通过B站上的<郝斌C语言自学教程>,对于C语言初学者来说,我认为郝斌真的是在全网C语言学习课程中讲的最全面,到位的一个,这个不是真不是博主我吹他哈,大家可以去B站去看看,C ...

  2. Python(调用函数、定义函数)

    函数的返回值: return 值:只能返回一次,只要执行return函数就终止 返回值:没有类型限制,也没有个数限制 没有return:None 返回一个值 返回多个值:元组 先定义,后使用,定义阶段 ...

  3. Python基础笔记:函数:调用函数、定义函数、函数的参数、递归函数

    一.定义一个求二元一次方程的根的函数 #Sublime Text import math def ee(a,b,c): delta=b*b-4*a*c if delta<0: return 'n ...

  4. python通过字符串定义函数名

    记录python里的一个有意思的小技巧:通过字符串定义函数名称. import sys m=sys.modules[__name__] def temp(x): return x+1 setattr( ...

  5. python -- 初始函数 函数的定义,函数的返回值以及函数的参数

    1.什么是函数,函数的定义及语法 2.函数的返回值 3.函数的参数 一.函数的定义及语法 函数的定义:定义了一个动作或者功能,是对功能的封装 语法: def 函数名( 形参列表 ):          ...

  6. javascript函数 (二 定义函数的三种方法)

    javascript定义函数(声明函数)可以有三种方法:正常方法.构造函数.函数直接量 <html><head></head><body> <sc ...

  7. Python入门--11--自定义函数

    使用def定义自定义函数 举个栗子: def myfristFunction(): print "we are 伐木累!" #输入myfristFunction() 会输出:we ...

  8. 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 ...

  9. C# 中函数内定义函数的委托方法

    //定义委托方法Action(无返回值)Func(有返回值) //无返回值委托 Action<string> SetKeyAndValue = delegate(string key) { ...

随机推荐

  1. WebSocket 初体验

    其实老早就觊觎 Socket 这碗美食了,在 WebSocket 发出后更是心潮澎湃... 奈何这需要后端同志的帮助,使得至今才得以品尝.(当然本文也只涉及前端部分) 以前想监听其他设备变化,大屏幕交 ...

  2. finally中的return

    周五晚6点下班去面试,出了一份笔试题,看到第一题有些蒙了,虽然以前遇到过类似的问题,但并没有留心记一下,觉得没人会这样写代码,但实际上没有面试题中是有的. 1,有在try块中执行不到finally的情 ...

  3. 创建Android守护进程(底层服务)【转】

    本文转载自:https://blog.csdn.net/myfriend0/article/details/80016739 创建Android守护进程(底层服务) 前言 Android底层服务,即运 ...

  4. 生成一个ipa的包,使非开发机也能安装成功 (Xcode5.1)

    for example: 想为com.apple.cloud的bundle identifier生成一个非开发机也能安装的ipa包.你需要一个apple的企业账号(apple有两种账号:开发者账号和企 ...

  5. VC 写注册表

    BOOL Running() { HKEY hKey; LPCTSTR strRegPath = L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion ...

  6. ubuntu12.04 错误:phonon: No such file or directory; phonon模块的安装

    http://blog.csdn.net/xsl1990/article/details/9009919 错误:phonon: No such file or directory 1)sudo  ap ...

  7. QT 使用QTcpServer QTcpSocket 建立TCP服务器端 和 客户端

    1.  如图客户端连接server后,server发送"hello tcp" 给客户端 2. 实例代码 -----------------------------------  s ...

  8. Spring学习之xml配置Bean总结

    学习Spring时,我用的是Maven来管理jar包,先看看maven的pom.xml: pom.xml <project xmlns="http://maven.apache.org ...

  9. php中浮点型变量

    $d = (0.1+0.7)*10;//$d为8 //floor函数返回不大于value的最接近的整数,舍去小数部分取整 $e = floor($d);//$e为7 为什么$e为7,而不是8 因为$d ...

  10. IntelliJ Idea 免费激活方法免激活码

    1. 到网站 http://idea.lanyus.com/ 获取注册码. 2.填入下面的license server: http://intellij.mandroid.cn/ http://ide ...