day11.python的函数及参数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了day11.python的函数及参数相关的知识,希望对你有一定的参考价值。

函数式编程最重要的是增强代码的重用性和可读性

1 def 函数名(参数):
2      
3     ...
4     函数体
5     ...

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

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

以上要点中,比较重要有参数和返回值:

1、返回值

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

技术分享
def 发送短信():
     
    发送短信的代码...
 
    if 发送成功:
        return True
    else:
        return False
 
 
while True:
     
    # 每次执行发送短信函数,都会将返回值自动赋值给result
    # 之后,可以根据result来写日志,或重发等操作
 
    result = 发送短信()
    if result == False:
        记录日志,短信发送失败...
View Code

2.参数

函数的有三中不同的参数:

  • 普通参数
  • 默认参数
  • 动态参数

普通参数:

普通参数的传递并没有个数和数据类型的限制,可以传递字符串,数字,列表和字典。也不限定个数,需要注意的是:函数需要多少参数,调用的时候就要按照它定义时的顺序和数据类型传递过去。

技术分享
 1 def argtest(name,age,fruit_lst,hobby_dic):
 2     print Hello,me name is %s,i\\‘m %d year\\‘s old%(name,age)
 3     print My favorite fruits are : %s%..join(fruit_lst)
 4     print My hobbies:
 5     for hobby in hobby_dic:
 6         print \\t%s%hobby_dic[hobby]
 7 
 8 lst = [apple,banana,watermelon]
 9 dic = {hobby one:teaism,hobby two:sing}
10 argtest(Eva_J,18,lst,dic)

输出的内容:
Hello,me name is Eva_J,im 18 years old
My favorite fruits are : apple.banana.watermelon
My hobbies:
 teaism
 sing
View Code

默认参数:
默认参数是给参数加上一个默认的值,但我们调用函数的时候,如果传递了这个参数,那么使用我们传递过来的值;如果不传则使用默认的值,默认参数可以有多个,但是必须放在普通参数之后。当我们有多个默认参数的时候,调用函数的时候可以使用参数名指定其中的某一个参数,以保证参数能准确的传递给被调用的函数。

技术分享
1 def argvtest(argv1,argv2 = aaa,argv3 = bbb):
2     print argv1:,argv1
3     print argv2:,argv2
4     print argv3:,argv3
5 
6 argvtest(a1,argv3 = a2)

输出的内容:
argv1: a1
argv2: aaa
argv3: a2
View Code

动态参数:
def func(*args) 接受多个位置参数,内部自动构造元组,序列前加*,避免内部构造元组
def func(**kwargs) 接收多个关键字参数,内部自动构造字典,序列前加**,直接传递字典
def func(*args,**kwargs):接受多个参数,既可以自动构造元组,又可以自动构造字典。

下图从左至右展示了自动构造元组,自动构造字典及前两者综合的参数传递方式:

技术分享

技术分享

技术分享

 





以上是关于day11.python的函数及参数的主要内容,如果未能解决你的问题,请参考以下文章

day3-函数参数及调用

day10-12 函数语法铺垫&函数的参数

day11-python基础

python-day5-生成器迭代器及递归调用

day12——Python高阶函数及匿名函数

Java基础--day05