Python函数定义和使用
函数是一段可以重复多次调用的代码,通过输入的参数值,返回需要的结果。通过使用函数,可以提高代码的重复利用率。本文主要介绍Python函数的定义、调用和函数参数设置方法。
函数的定义
Python函数定义非常简单,使用关键字def定义。函数必须先定义后使用。Python函数定义的格式如下所示:
def 函数名(参数1,参数2,...):
语句块
return [表达式]
函数名可以是字母、数字或下划线组成的字符串,但是不能以数字开头。函数的参数放在一对圆括号中。参数的个数可以有一个或多个,参数之间用逗号隔开。括号后面以冒号结束,冒号下面就是函数的主体。函数的返回使用return语句,return [表达式]结束函数。如果return后面不带表达式,表示返回None。实例如下:
def power(x, n):
s = 1
while n > 0:
n = n - 1
s = s * x
return s
函数调用
函数调用采用函数名加一对圆括号的方式,圆括号内的参数是传递给函数的具体指。函数调用格式如下:
函数名(实参1,实参2...)
实际参数必须与形式参数一一对应,否则将报错。具有默认值的参数例外。上述power()函数的调用方法如下:
power(3,2)
函数的参数
函数定义的时参数名和位置就已经确定。使用函数时只需要知道如何传递正确的参数,以及函数将返回什么样的值就够了,函数内部的复杂逻辑被封装起来,调用者无需了解。Python的函数定义非常简单,但灵活度却非常大。除了正常定义的必选参数外,还可以使用默认参数、可变参数和关键字参数,使得函数定义出来的接口,不但能处理复杂的参数,还可以简化调用者的代码。
(1)位置参数
位置参数指的是调用函数时根据函数定义的参数位置来传递参数。上述power()函数的x,n参数就表示参数。调用时可以直接通过传参嗲用。函数调用时传入参数个数必须与位置参数个数一致,否则会报错。实例如下:
# -*- coding:utf-8 -*- def power(x, n):
s = 1
while n > 0:
n = n - 1
s = s * x
return s print "power(3, 2) = ", power(3, 2) #传入参数个数与定义的位置参数一致。
print "power(3) = ", power(3) #传入参数个数与定义的位置参数不一致。报错"TypeError: power() takes exactly 2 arguments (1 given)"
(2)默认参数
函数的参数支持默认值。当某个参数没有传递实际的值时,函数将使用默认参数计算。特别注意的是,在函数定义和调用时,所有位置参数必须出现在默认参数前。修改power函数代码如下:
def power(x, n=2):
s = 1
while n > 0:
n = n - 1
s = s * x
return s print "power(3) = ", power(3) #不带参数n调用函数,n赋默认值为2
print "power(3, 2) = ", power(3, 2) #参数n指定值为2调用函数
print "power(3, 3) = ", power(3, 3) #参数n指定值为3调用函数
代码运行结果如下:
power(3) = 9
power(3, 2) = 9
power(3, 3) = 27
(3)可变参数
可变参数就是值允许调用函数时传入参数个数是可变的,可以是1个,2个或者多个,这些可变参数在函数调用时自动组装为一个tuple。因此在函数内部获取可变参数时,参数接收到的是一个元组。可变参数在函数定义时的格式如下:
def 函数名(*args):
....
return 变量或表达式
可变参数在函数定义时对形参前加一个星号*,如*args。实例如下:
def fun1(x,y,*args):
print "x = ", x
print "y = ", y
print "type(*args) = ", type(args) #可变参数args在函数内部获取到的类型
print "args = ", args #可变参数args获取的传入的值 sum = 0
for i in args:
sum += i
print "sum = ", sum fun1('A', 'B', 1, 2, 3, 4)
代码运行输出结果如下:
x = A
y = B
type(*args) = <type 'tuple'>
args = (1, 2, 3, 4)
sum = 10
通过上述实例,我们知道。可变参数args可以传入任意数量参数。函数内部获取可变参数的类型为tuple。
(4)关键参数
关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict。这是不同于可变参数的地方。函数定义时使用关键参数的格式如下:
def 函数名(**kw):
....
return 变量或表达式
关键参数在函数定义时对形参前加两个星号**,如**kw。实例如下:
def fun1(x,y,**kw):
print "x = ", x
print "y = ", y
print "type(**kw) = ", type(kw)
print "kw = ", kw for key, value in kw.items():
print key, value fun1('A', 'B', num1=1, num2=2, num3=3, num4=4)
代码运行结果如下:
x = A
y = B
type(**kw) = <type 'dict'>
kw = {'num4': 4, 'num1': 1, 'num2': 2, 'num3': 3}
num4 4
num1 1
num2 2
num3 3
从上述结果可以知道,函数内部获取的关键参数的类型为字典(dict),使用时以字典形式操作即可。
函数的嵌套
函数的嵌套是指在函数的内部调用其他函数。C、C++只允许在函数体内部嵌套。而Python不仅支持函数体内嵌套,还支持函数定义的嵌套。通过2个实例分别查看,如下
(1)函数体内嵌套
def sum(a, b):
return a + b def sub(a, b):
return a - b def fun1():
x=1
y=2
m = 2
n = 4
return sum(x, y) * sub(m, n) print fun1()
(2)函数定义的嵌套。不推荐使用,代码可读性、可维护都不好。
def fun1():
x=1
y=2
m = 2
n = 4
def sum(a, b):
return a + b def sub(a, b):
return a - b
return sum(x, y) * sub(m, n) print fun1()
匿名函数lambda
lambda函数用于创建一个匿名函数,函数名未和标识符进行绑定。使用lambda函数可以返回一些简单的运算结果。lambda函数的格式如下所示:
lambda 变量1,变量2,...: 表达式
其中,变量列表用于表达式的计算。lambda属于函数,因此变量列表后需要一个冒号。通常把lambda赋值给一个变量,变量就可以作为函数使用。另外,lambda中只能使用表达式,不能使用判断、循环等多重语句。常用实例如下:
>>> list1 = [3,5,-4,-1,0,-2,-6]
>>> sorted(list1, key=lambda x: abs(x))
Python函数定义和使用的更多相关文章
- Python(2)深入Python函数定义
Python学习 Part2:深入Python函数定义 在Python中,可以定义包含若干参数的函数,这里有几种可用的形式,也可以混合使用: 1. 默认参数 最常用的一种形式是为一个或多个参数指定默认 ...
- Python 函数定义以及参数传递
Python 函数定义以及参数传递1.函数定义#形如def func(args...): doSomething123以关键字def 开头,后面是函数名和参数下面是函数处理过程. 举例: def ad ...
- python函数定义
刚学用Python的时候,特别是看一些库的源码时,经常会看到func(*args, **kwargs)这样的函数定义,这个*和**让人有点费解.其实只要把函数参数定义搞清楚了,就不难理解了. 先说说函 ...
- Python学习-10.Python函数定义(二)
在Python中定义函数的时候,可以使用参数默认值的方式定义函数 例子: def welcome(who,state='is',action='talking'): print(who,state,a ...
- 9 - Python函数定义-位置参数-返回值
目录 1 函数介绍 1.1 为什么要使用函数 1.2 Python中的函数 2 函数的基本使用 3 函数的参数 3.1 参数的默认值 3.2 可变参数 3.2.1 可变位置传参 3.2.2 可变关键字 ...
- Python 函数定义和使用
# 函数的概念 # 概念 # 写了一段代码实现了某个小功能; 然后把这些代码集中到一块, 起一个名字; 下一次就可以根据这个名字再次使用这个代码块, 这就是函数 # 作用 # 方便代码的重用 # 分解 ...
- 初识python 函数(定义,传参,返回值)
python基础(二): 菜鸟教程基础知识讲解的非常全面,内容选择我认为的重点输出一遍 函数: 定义一个函数: 你可以定义一个由自己想要功能的函数,以下是简单的规则: def fun(arg): pa ...
- python 函数定义
我们可以创建一个函数来列出费氏数列 >>> def fib(n): # write Fibonacci series up to n ... """Pr ...
- Python学习 Part2:深入Python函数定义
在Python中,可以定义包含若干参数的函数,这里有几种可用的形式,也可以混合使用: 1. 默认参数 最常用的一种形式是为一个或多个参数指定默认值. >>> def ask_ok(p ...
随机推荐
- WKWebView 加载本地HTML随笔
一天的时间 解决两个坑~~ 1.加载不出来本地HTML 的JS CSS 样式,问题是引用到项目中 是用的group 这个是错的 直接上图 就知道了 像上图一样,加入相对路径即可,因为如果使用了gro ...
- 初学java集合框架笔记
List接口常用方法: 方法名 说 明 boolean add(Object o) 在列表的末尾顺序添加元素, 起始索引位置从0开始 void add(int index,Object o) 在 ...
- 解决插值表达式闪烁问题 - v-cloak
v-cloak页面在js没有加载出来的时候,不显示该部分 linux可以通过响应式设计模式,来模拟2,3G网络 <!DOCTYPE html><html><head> ...
- SQL-存储过程-010
什么是存储过程? 可以理解为数据库中的方法,与C#中的方法一样,具有参数和返回值: 存储过程的优点? 提高运行速度:存储过程在创造是进行编译,以后运行存储过程都不需要再进行编译,极大化的提高了数据库的 ...
- list实现大整数加法
#include<iostream> #include<list> #include<string> using namespace std; list<in ...
- c++ 快速读入输出
1. 读入优化 C++中有一个函数:getchar() ,用于读入字符,那么这跟读入整数有什么关系呢? 其实,经过类似高精度的处理,就可以实现类型转换啦! 下面是正负数读入优化模板: #include ...
- MySQL--Profiling和Trace使用
使用MySQL Profiling ##=====================================## ## 查看PROFILING是否开启 SELECT @@profiling ## ...
- html总结2
(1)选择器: 1.标签选择器:用于修饰同类HTML标签的共性风格 <style type="text/css"> li{ color:red; font-size:2 ...
- Flutter 知识点
Flutter:一个移动应用开发框架,它使用 Dart.C++.Skia 开发,对外提供了完全不依赖系统平台的 Widget 的能力,只通过自绘图形的方式工作,具有极其优秀的跨平台性.目前已经支持了 ...
- Custom Grid Columns - FireMonkey Guide
原文 http://monkeystyler.com/guide/Custom-Grid-Columns ack to FireMonkey Topics As we saw in TGrid a F ...