首页 > 代码库 > Python学习笔记 之 函数
Python学习笔记 之 函数
函数
函数式编程最重要的是增强代码的重用性和可读性
- 定义和使用
def 函数名(参数):
...
函数体
...
返回值
函数的定义主要有如下要点:
def:表示函数的关键字
函数名:函数的名称,日后根据函数名调用函数
函数体:函数中进行一系列的逻辑计算
参数:为函数体提供数据
返回值:当函数执行完毕后,可以给调用者返回数据
举例:
1 def mail():2 n = 1233 n += 14 print(n)5 mail()6 f = mail7 f()
结果:
124
124
1-1 返回值
函数是一个功能块,该功能到底执行成功与否,需要通过返回值来告知调用者。
1 def show():2 print(‘a‘)3 return [11,22]4 print(‘b‘)5 show()
结果:
a
1-2 参数
函数中有三种不同的参数:
- 普通参数
- 默认参数
- 动态参数
普通参数
1 def show(a1,a2):2 print(a1,a2)3 4 show(11,22)
结果:
11 22
默认参数:默认参数需要放在参数列表最后
1 def show(a1,a2=99):2 print(a1,a2)3 4 show(11)
结果:
11 99
指定参数
1 def show(a1,a2):2 print(a1,a2)3 4 show(a2=123,a1=190)
结果:
190 123
动态参数
1 def show(*arg):# * - 接收参数并转换元组2 print(arg,type(arg))3 4 show(1,56,78,8979)
结果:
(1,56,78,8979) <class ‘tuple‘>
1 def show(**arg): # ** - 接收参数并转换字典 2 print(arg,type(arg))3 4 show(n1=78,uu=123)
结果:
{‘uu‘: 123, ‘n1‘: 78} <class ‘dict‘>
1 def show(*arg1,**args):# 一个*的在前,两*在后2 print(arg1,type(arg1))3 print(args,type(args))4 5 show(12,34,34,54,n9=33,n2=99)# 一个*的在前,两*在后
结果:
(12, 34, 34, 54) <class ‘tuple‘>
{‘n2‘: 99, ‘n9‘: 33} <class ‘dict‘>
1 def show(*arg1,**args):# 一个*的在前,两*在后2 print(arg1,type(arg1))3 print(args,type(args))4 5 l = (11,22,3,4)6 d = {‘n1‘:89,‘k1‘:‘hello‘}7 show(l,d)
结果:
((11, 22, 3, 4), {‘k1‘: ‘hello‘, ‘n1‘: 89}) <class ‘tuple‘>
{} <class ‘dict‘>
很明显,结果不是我们想要的。关键是如果我们使用show(l,d)
那么和我们使用show(1,56,78,8979) 没有什么区别。所以,为了解决这种冲突问题,只需要在 l 前加一个*,在 d 前加两个 * 即可:
1 def show(*arg1,**args):# 一个*的在前,两*在后2 print(arg1,type(arg1))3 print(args,type(args))4 5 l = (11,22,3,4)6 d = {‘n1‘:89,‘k1‘:‘hello‘}7 show(*l,**d)
结果:
(11, 22, 3, 4) <class ‘tuple‘>
{‘n1‘: 89, ‘k1‘: ‘hello‘} <class ‘dict‘>
符合我们的要求。
动态参数实现字符串格式化:
1 s1 = "{0} is {1}"2 ret = s1.format(‘Young‘,‘handsome‘)3 print(ret)
结果:
Young is handsome
1 s1 = "{0} is {1}"2 l = [‘Young‘,‘handsome2‘]3 ret = s1.format(*l)4 print(ret)
结果:
Young is handsome2
1 s1 = ‘{name} is {value}‘# 字典这里就不是{0}、{1}了,而是用{key}、{value}2 ret = s1.format(name=‘Young‘,value=http://www.mamicode.com/‘handsome‘)3 print(‘第一:‘,ret)4 5 s2 = ‘{name2} is {key}‘6 d = {‘name2‘:‘Young‘,‘key‘:‘smart‘}7 ret = s2.format(**d)8 print(‘第二:‘,ret)
结果:
第一: Young is handsome
第二: Young is smart
2. 内置函数
any : 只要有一个是真的就是真的
ord 和 chr配合使用
chr ord random.randint 可以生产验证码
enumerate
eval
map
filter
1 li=[1,22,33,45,74,788]2 def func(num):3 if num>33:4 return True5 else:6 return False7 n = filter(func,li)8 print(list(n))
结果:
[45, 74, 788]
将列表中大于 33 的元素拿出来
Python学习笔记 之 函数