Python3快速入门(五)——Python3函数

一、函数定义

1、函数定义

Python 定义函数使用 def 关键字,一般格式如下:

def function_name(parameter_list):pass

默认情况下,参数值和参数名称按函数声明中定义的顺序进行匹配。
函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 ()。
任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数。
函数的第一行语句可以选择性地使用文档字符串描述函数说明。
函数内容以冒号起始,并且进行缩进。
函数的定义示例如下:

def add(x, y):result = x + yreturn result

2、函数的返回值

函数使用return [表达式] 结束函数,返回一个或多个值给调用方。不带表达式的return相当于返回 None。

def get_fruits():apple = "Apple"banana = "Banana"orange = "Orange"return apple, banana, orangea,b,c = get_fruits()
print(a, b, c)

二、函数调用

1、函数调用

函数定义只给了函数一个名称,指定了函数里包含的参数和代码块结构。
函数调用直接使用定义的函数名称以及传递相应的参数进行调用。

2、函数调用的递归限制

Python默认设置了函数的最大递归调用次数,开发者可以直接进行设置。设置方法如下:

#!/usr/bin/python3import syssys.setrecursionlimit(100) # 设置最大递归次数为100

三、函数参数

1、必须参数

必须参数是函数调用时必须传递的参数。

#!/usr/bin/python3def add(x, y):result = x + yreturn resultadd(3, 2)

2、关键字参数

关键字参数用于函数调用时,使用形式参数关键字将实际参数赋值给函数的相应形式参数,函数调用过程中传递实际参数顺序可以与形式参数顺序不匹配,但所有的必须参数必须被赋值。

#!/usr/bin/python3def add(x, y):result = x + yreturn resultadd(y=2, x=3)

上述代码中,add函数的调用传递的实际参数通过指定关键字参数实际指定相应的形式参数,不必按照形式参数顺序匹配,但必须参数都必须被传递。

3、默认参数

函数在定义过程中可以为指定参数默认的值,并且必须参数必须放在默认参数的左侧。

#!/usr/bin/python3def print_student(name, gender="男", age=28):print(name)print(gender)print(age)print_student("Bauer", "男", 30)
print_student("Lee")
print_student("Lisa","女")print_student(age=30, name="Bob")

函数调用时,可以使用关键字参数对形式参数进行赋值,默认参数可以缺省,但必须参数必须被赋值,必须参数可以使用关键字参数赋值。如果必须参数不使用关键字参数,则必须参数必须严格按照函数定义的顺序传递,其默认参数可以使用关键字参数选择性赋值,没有使用关键字参数传递的默认参数将使用默认值。

4、可变参数

可变参数通过使用*修饰形式参数定义可变参数。
函数定义时,可以定义可变参数,在函数调用时传递可变的多个实际参数。

#!/usr/bin/python3def add(*args):result = 0;for x in args:result += xreturn resultc = add(1, 2, 3, 4)
print(c)
c = add(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
print(c)
tup1 = 1, 2, 3, 4
c = add(*tup1) # 传入序列
print(c)
list1 = [1, 2, 3]
c = add(*list1)
print(c)

对应定义了可变参数的的函数,如果需要传入序列作为实际参数,需要在序列前加*
如果函数定义时有可变参数和默认参数,函数调用时可以使用关键字参数用于指定默认参数。

#!/usr/bin/python3def add(x, *args, y=100):result = x + y;for i in args:result += ireturn resultc = add(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) # 155
print(c)
c = add(1, 2, 3, 4, 5, 6, 7, 8, 9, y=10) # 55
print(c)

Python中,如果函数定义时可变参数放在默认参数的左侧,则默认参数需要使用关键字参数显式指定。

5、关键字可变参数

关键字可变参数通过使用**修饰形式参数定义,关键字可变参数为字典类型,关键字可变参数属于可选参数。

#!/usr/bin/python3def average_score(**args):result = 0;for key, value in args.items():result += valueprint(key + ": ", value)result = result / len(args)print("Average score is ", result)return resultbook = {"Bauer": 90, "Bob": 100, "Lisa": 70, "Lee": 100}
average_score(**book)
average_score(Bauer=100, Lisa=70, Lee=100)

函数调用时,关键字可变参数可以传递多个键值对,页可以直接传递dictionary类型变量,此时需要使用**修饰字典变量。

四、匿名函数

python 使用 lambda表达式来创建匿名函数,函数定义如下:
lambda [arg1 [,arg2,.....argn]]:expression
Lambda表达式定义的匿名函数的函数体不是一个代码块,因此,仅能在lambda表达式中封装有限的逻辑。
Lambda表达式拥有自己的命名空间,且不能访问自有参数列表外或全局命名空间里的参数。
虽然lambda函数看起来只能写一行,却不等同于C或C++的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行效率。

#!/usr/bin/python3
# -*- coding:utf-8 -*-sum = lambda arg1, arg2: arg1 + arg2;# 调用sum函数
print(sum(10, 20))
print(sum(20, 20))

五、变量作用域

程序的所有的变量并不是在任何位置都可以访问的,访问权限决定于变量是在哪里赋值的。变量的作用域决定了在哪一部分程序可以访问哪个特定的变量名称。
定义在函数内部的变量拥有局部作用域,定义在函数外的拥有全局作用域,代码块内部局部变量会覆盖全局变量,在局部作用域内修改全局变量的值时,需要使用global关键字对相应全局变量进行声明,表明本作用域内使用的是全局变量。
局部变量只能在其被声明的函数内部访问,而全局变量可以在整个程序范围内访问。调用函数时,所有在函数内声明的变量名称都将被加入到作用域中。

#!/usr/bin/python3
# -*- coding:utf-8 -*-base = 100def sum(*args):global basebase = 0result = 0;for i in args:result += ireturn result + base;c = sum(1,2,3,4,5,6,7,8,9,10)
print(c) # 55
print(base) # 0

转载于:https://blog.51cto.com/9291927/2409671

Python3快速入门(五)——Python3函数相关推荐

  1. 全干货之Python3快速入门(五)——Python3函数

    全干货之Python3快速入门(五)--Python3函数 什么是函数 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段 函数能提高应用的模块性,和代码的重复利用率. 在Python中 ...

  2. Python3快速入门(三)——Python3标准数据类型

    Python3快速入门(三)--Python3标准数据类型 一.Python3标准数据类型 Python3 中有六种标准数据类型: A.Number(数字) B.String(字符串) C.List( ...

  3. python3入门-终于懂得python3快速入门教程

    跟Java语言一样,python语言也有类的概念,直接使用class关键字定义python类.在python类,定义类的方法.然后直接使用类的初始化调用自身,获取相应的属性.以下是小编为你整理的pyt ...

  4. Python3快速入门——Pyth

    Python3快速入门(十)--Python3网络编程 一.socket模块简介 Python 提供了两个级别访问的网络服务,低级别的网络服务支持基本的 Socket,提供了标准的BSD Socket ...

  5. Python3快速入门(十四)——Pandas数据读取

    Python3快速入门(十四)--Pandas数据读取 一.DataFrame IO 1.CSV文件 pandas.read_csv(filepath_or_buffer, na_values='NA ...

  6. Python3快速入门(一)——Python简介

    Python3快速入门(一)--Python简介 一.Python简介 1.Python简介 Python是一种解释型.面向对象.动态数据类型的高级程序设计语言,由荷兰Guido van Rossum ...

  7. python def函数报错详解_JSer 快速入门 Python 之函数详解

    前一篇文章,用一天的时间,通过与 JavaScript 做对比的方式,快速领略了 Python 全貌. 梳理了那么多,若忽略细节差异,两门语言只有两个重要差异: 1.书写风格上大相同 2.功能覆盖上, ...

  8. Flutter快速入门 五步搞定Flutter环境配置

    Flutter是什么? Flutter是一款移动应用程序SDK,一份代码可以同时生成iOS和Android两个高性能.高保真的应用程序. Flutter目标是使开发人员能够交付在不同平台上都感觉自然流 ...

  9. python3菜鸟教程-Python3 快速入门教程

    Python3下载地址 python.org为python的官网,进去后如果是windows用户就先看一下自己的系统是32位的还是64位的,64位的下x86-64,32位的下x86,最好别下最新的,因 ...

最新文章

  1. vim-go开发环境安装
  2. C++ Primer 5th笔记(6)chapter6 函数:参数匹配
  3. delphi 串口通信发送_STM32第五章串口通讯详解
  4. 【LiveVideoStack线上分享】— 海外复杂网络环境下的视频播放体验优化
  5. mysql主从复制实施流程_MySQL主从复制认识及实施操作
  6. 如何建立一个利于SEO的网站
  7. Android 布局管理器 之 TableLayout
  8. 【轻院热身赛】级数求和、进制转换、candy
  9. 中国农用喷洒机行业市场供需与战略研究报告
  10. Web服务及http协议_学习笔记
  11. 用组织分析框架分析阿里巴巴集团
  12. 背包DP入门笔记(1) 骨头收集 HDU-2602
  13. 基于高频18000-3M3技术的RFID智能书架方案
  14. 哔哩下载姬(downkyi)v1.4.0 B站视频下载工具 哔哩哔哩视频解析
  15. ​Windows下RSA密钥生成工具openssl​
  16. 顺序表的基本操作(C语言实现,简单易懂!)
  17. iRedMail退信问题的解决
  18. 计算机三级网络考点(+题库经典例题)
  19. 双十一引流的标题怎样写,写标题注意的点
  20. python库源码分析_python第三方库Faker源码解读

热门文章

  1. 什么是schema?
  2. 设计模式:单例模式之饿汉式
  3. error: index-pack died of signal fatal: index-pack failed【Git】
  4. 数据结构之图(2-2)【邻接多重表】适用于无向图
  5. C++二维码相关库编译
  6. 内容营销的21条黄金法则
  7. mysql主从库配置方法
  8. 第一行代码读书笔记3+错误分析
  9. 从李小龙的一句话看程序员是否应该多学几种编程语言
  10. 使用DOSBox编译汇编代码