Python之路:Python 函数

一、函数式编程:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可

面向对象:对函数进行分类和封装

二、 函数的定义和使用

def 函数名(参数):

	...
	函数体
	...

函数的定义主要有如下要点:

  • def:表示函数的关键字

  • 函数名:函数的名称,日后根据函数名调用函数
  • 函数体:函数中进行一系列的逻辑计算,如:发送邮件、计算出 [11,22,38,888,2]中的最大数等...
  • 参数:为函数体提供数据
  • 返回值:当函数执行完毕后,可以给调用者返回数据。

PS:比较重要有参数和返回值

1、返回值

函数是一个功能块,该功能到底执行成功与否,需要通过返回值来告知调用者。

def 发送短信():

	发送短信的代码...

	if 发送成功:
		return True
	else:
		return False
while True:

	# 每次执行发送短信函数,都会将返回值自动赋值给result
	# 之后,可以根据result来写日志,或重发等操作
	result = 发送短信()
	if result == False:
		记录日志,短信发送失败...

2、参数:

普通参数:形参、实参(参数可以有N个,传入制定个数的参数)

默认参数:不传入,使用默认值 、默认参数必须放在参数列表的最后

动态参数:

接受多个参数,内部自动构造元组,用*避免内部构造元祖

接受多个参数,用**传入字典

 

例:发邮件

import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr

msg = MIMEText(‘邮件内容‘, ‘plain‘, ‘utf-8‘)
msg[‘From‘] = formataddr(["Lenliu",‘[email protected]‘])
msg[‘To‘] = formataddr(["收件人",‘********@qq.com‘])
msg[‘Subject‘] = "主题"

server = smtplib.SMTP("smtp.126.com", 25)
server.login("[email protected]", "邮箱密码")
server.sendmail(‘[email protected]‘, [‘********@qq.com‘,], msg.as_string())
server.quit()
 

三、map:遍历序列,对序列中每个元素进行操作,最终获取新的序列。

li = [11, 22, 33]
sl = [1, 2, 3]
new_list = map(lambda a, b: a + b, li, sl)

利用map()函数,把用户输入的不规范英文字,变成小写

四、filter:对序列中的元素进行筛选,最终获取符合条件的序列

li = [11, 22, 33]
new_list = filter(lambda arg: arg > 22, li)

用filter()函数过滤序列

五、reduce:对于序列内所有元素进行累计操作

li = [11, 22, 33]
result = reduce(lambda arg1, arg2: arg1 + arg2, li)
# reduce的第一个参数,函数必须要有两个参数
# reduce的第二个参数,要循环的序列
# reduce的第三个参数,初始值
 
六、闭包函数:闭包内的函数不能被外部调用

例1:

例2:

七、递归函数:在内部调用自身,这个函数就是递归函数

例1:递归求阶乘

def  fact(n):          #定义函数

if  n == 1:

return 1

return n*fact(n-1)

结果:

>>>fact(5)

120

===> 5 * fact(4)
===> 5 * (4 * fact(3))
===> 5 * (4 * (3 * fact(2)))
===> 5 * (4 * (3 * (2 * fact(1))))
===> 5 * (4 * (3 * (2 * 1)))
===> 5 * (4 * (3 * 2))
===> 5 * (4 * 6)
===> 5 * 24
===> 120

例2:

def  fact_iter(product,count,max):
       if count>max:
            return product
         return fact_iter(product*count,count+1,max)
结果:
>>>fact_iter(1,1,5)
120
===> fact_iter(1, 1, 5)
===> fact_iter(1, 2, 5)
===> fact_iter(2, 3, 5)
===> fact_iter(6, 4, 5)
===> fact_iter(24, 5, 5)
===> fact_iter(120, 6, 5)
===> 120

例3:

def fact(n):

	if n==1:
		return 1
	return n*fact(n-1)
number=int(input(‘请输入一个正整数: ‘))
result=fact(number)
print(‘%d 的阶乘是: %d‘%(number,result))

例4:

def func(arg1,arg2):
   if arg1 == 0:
        pass
         arg3 = arg1+arg2
        if arg3 > 10:
           return arg3
           ret = func(arg2,arg3)
           return ret

result = func(0,5)
print result


 
时间: 2024-10-13 03:37:50

Python之路:Python 函数的相关文章

Python之路Python作用域、匿名函数、函数式编程、map函数、filter函数、reduce函数

Python之路Python作用域.匿名函数.函数式编程.map函数.filter函数.reduce函数 一.作用域 return 可以返回任意值例子 def test1(): print("test1") def test(): print("test") return test1 res = test() print(res) 输出结果 test <function test1 at 0x021F5C90> 分析:这里print(res)输出的是te

Python之路Python内置函数、zip()、max()、min()

Python之路Python内置函数.zip().max().min() 一.python内置函数 abs() 求绝对值 例子 print(abs(-2)) all() 把序列中每一个元素做布尔运算,如果全部都是true,就返回true, 但是如果是空字符串.空列表也返回true 例子 print(all([1,2,'1',''])) 输出结果 False 例子2 print(all('')) 输出结果 True any() 把序列中每一个元素做布尔运算,如果有一个为true就返回true, 但

python之路 初始函数

python之初识函数: (一)为什么要使用函数:  首先举一个例子,假如我们现在要计算"hello world"这个字符串的长度,我们可以怎么计算1,直接print(len(hello world)) 就可以计算长度,那么现在   用len()这个函数了,我们还可以怎么计算呢,看下面代码 #利用for 循环计算字符串长度 s = "hello world" length = 0 for i in s: length += 1 print(length) 这样我们也

Python之路--Python基础4--内置函数

内置函数介绍:  内置参数官方详解 https://docs.python.org/3/library/functions.html?highlight=built#ascii   下面是本人对常用内置函数的理解: print(abs(-1)) #绝对值 1 print(all([1, 2, 3, 4, 5])) #True print(all(['', 1, 2])) #False #bool为False的情况0. 空.None print(bin(12345), type(bin(12345

python之路——初识函数

为什么要用函数 现在python届发生了一个大事件,len方法突然不能直接用了... 让你计算'hello world'的长度,你怎么计算? 这个需求对于现在的你其实不难,我们一起来写一下. s1 = "hello world" length = 0 for i in s1: length = length+1 print(length) 好了,功能实现了,非常完美.然后现在又有了一个需求,要计算另外一个字符串的长度,"hello eva". 于是,这个时候你的代码

python之路_函数实例及装饰器介绍

一.习题讲解 1.写函数,返回一个扑克牌列表,里面有52项,每一项是一个元组.例如:[('红心',2), ('草花',2), -('黑桃,'A')] def cards(): num=[] for v in range(2,11): num.append(v) num.extend(['J','Q','K','A']) type=['红心','草花','方块','黑桃'] result=[] for i in num: for j in type: result.append((j,i)) re

python 之路 day10 函数

一:深浅拷贝 :  s = [ [1,2] ,3  ,4  ]       s1 = s.copy()  ,   s1[0][0] = 8 ,  print (s) ,print (s1),   两个的结果都为 [   [8,1] ,  3 ,4  ]   首先是因为列表是可以修改的,再一个跟指针有关系,具体图如下: 浅拷贝(shallow copy) 只会拷贝第一层,如上面的 3,4 ,因为只有一个指针指向 深拷贝(deep copy): 全部克隆  需要模块, import copy 二 :

Python之路---------&gt;Python介绍

一. Python介绍 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承. 最新的TIOBE排行榜,Python赶超PHP占据第五, Python崇尚优美.清晰.简单,是一个优秀并广泛使用的语言. 由上图可见,Python整体呈上升趋势,反映出Python应用越来越广泛并且也逐渐得到业内的认可!!! Python可以应用于众多领域,如:数据分析.组件集成

Python之路-python(常用模块学习)

模块介绍 time &datetime模块 random os sys shutil shelve xml处理 yaml处理 configparser hashlib re正则表达式 1.模块: 定义:其实模块简单说就是一堆代码实现某个功能,它们是已经写好的.py文件.只需要用import应用即可. 分类: 1.自定义模块 2.内置标准模块(又称标准库) 3.开源模块    1.自定义模块,就是自己写的.py文件为了实现某个功能.    2.内置模块,就是python自身已经写好的某个功能,例如

Python之路-python(装饰器、生成器、迭代器、Json &amp; pickle 数据序列化、软件目录结构规范)

装饰器: 首先来认识一下python函数, 定义:本质是函数(功能是装饰其它函数),为其它函数添加附件功能        原则:        1.不能修改被装饰的函数的源代码.        2.不能修改被装饰的函数的调用方式. 1 def test(): 2 print('test') 3 print(test ) #表示是函数 4 test() #表示执行foo函数 <function test at 0x00595660>#表示的是函数的内存地址test#函数test执行结果 简单的装