四时宝库

程序员的知识宝库

「百度领航团」Python零基础学习笔记——函数基础

函数

函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。

自定义函数

  • 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()。
  • 任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。
  • 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
  • 函数内容以冒号起始,并且缩进。
  • return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。

例1:下面定义了一个student_name的函数

def student_name(name):
        "打印学生的名字"
        print('姓名:', name)
        return {'姓名':name}

例2:下面定义一个函数,返回多个值

def student_name_and_age():
       "记录学生的名字和年龄"
       name = input('请输入姓名\n')
       age = int(input('请输入年龄\n'))
       print(f'姓名:{name};年龄:{age}')
       return name,age

函数的调用

rst = student_name('Alice')
rst = student_name_and_age()
name, age = student_name_and_age()

补充:函数可以嵌套调用

例4:函数嵌套调用

def worker(s):
        rst = 10 / float(s)
        return rst
def group_leader(s):
        rst = worker(s) * 2
        return rst
def CTO(s):
         return group_leader(s)

函数的参数传递

  • 位置参数
  • 缺省参数
  • 可变参数
  • 关键字参数
  • 命名关键字参数

1 位置参数:最简单。位置参数须以正确的顺序传入函数、数量必须和声明时的一样

例1-3都是位置参数

2 缺省参数:调用函数时,缺省参数的值如果没有传入,则被认为是默认值。

例5:

def student_name_and_age(name, age='不愿透露'):
           "设置默认参数"
           print('姓名:%s 年龄 %s' %(name, age))

调用时:缺省参数可以不给值,也可以给值。

student_name_and_age('张三')
student_name_and_age('张三', 18)

3 可变参数:传入的参数个数是可变的,可以是0个、1个到任意个。在函数调用时自动组装为一个tuple。

用法:在参数名前加个‘*’。

例6:

def all_student_names(*names):
        for name in names:
                print('姓名:', name)

调用时:

names = ('张三','李四','王五')
all_student_names(names)

4 关键字参数:允许传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict。

用法:在参数名前有2个'*'。

例7:

def student_info(name, age, **kw):
        print(f'我的名字叫:{name},年龄:{age},其它信息:{kw}')
def student_info_more(name, age, **kw):
       print(f'我的名字叫:{name},年龄:{age},其它信息:{kw}')
       if 'city' in kw:
             print('来自:', kw['city'])

调用:

student_info('张三', 18, height=180)
student_info_more('张三', 18, height=180, city='北京')

5 命名关键字参数:可以限制关键字参数的名字。

例8:‘*’后的参数height和weight就是命名关键字参数。

def print_person_info(name, age, *, height, weight):
            print('我的名字叫:', name, '年龄:', age,'身高', height, '体重', weight)

在Python中定义函数,可以用必选参数、默认参数、可变参数、关键字参数和命名关键字参数。也可以组合使用。但是请注意,参数定义的顺序必须是:必选参数、默认参数、可变参数、命名关键字参数和关键字参数。

lambda匿名函数

  • lambda 只是一个表达式,函数体比 def 简单很多。
  • lambda 的主体是一个表达式,而不是一个代码块。仅仅能在 lambda 表达式中封装有限的逻辑进去。
  • lambda 函数拥有自己的命名空间,且不能访问自有参数列表之外或全局命名空间里的参数。

例9:lambda 若干个输入参数 : 返回值的表达式。

lambda arg1, arg2: arg1 + arg2

调用时:

(lambda arg1, arg2: arg1 + arg2 )(1, 2)

更常见的定义和调用:

add = lambda arg1, arg2: arg1 + arg2
add(1,2)

高阶函数

一个函数可以接收另一个函数作为参数,这种函数就称之为高阶函数。

例10:在func_x函数中,参数f就是另一个函数名。

def func_x(x, f):
       return f(x)
int2str = lambda x : str(x)

调用时:

func_x(-112,abs)                    #求-112的绝对值
func_x(-112,int2str)             #把-112转成字符串

个人心得

对比C语言来说,Python的函数定义和调用都更简洁,参数更多样化。

更多学习内容,请见:https://aistudio.baidu.com/aistudio/course/introduce/7073。

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接