python 函数

简介: python 函数

函数的基本结构

Python中的函数基本结构:

def 函数名([参数列表]):

    语句

几点说明:

  • 函数名的命名规则要符合python中的命名要求。一般用小写字母和单下划线、数字等组合
  • def是函数的开始,这个简写来自英文单词define,显然,就是要定义一个什么东西
  • 函数名后面是圆括号,括号里面,可以有参数列表,也可以没有参数
  • 千万不要忘记了括号后面的冒号
  • 语句,相对于def缩进,按照python习惯,缩进四个空格

看简单例子,深入理解上面的要点:

>>> def name():         #定义一个无参数的函数,只是通过这个函数打印
...     print "hiekay"  #缩进4个空格
... 
>>> name()              #调用函数,打印结果
hiekay

>>> def add(x,y):       #定义一个非常简单的函数
...     return x+y      #缩进4个空格
... 
>>> add(2,3)            #通过函数,计算2+3
5

注意上面的add(x,y)函数,在这个函数中,没有特别规定参数x,y的类型。其实,这句话本身就是错的,还记得在前面已经多次提到,在python中,变量无类型,只有对象才有类型,这句话应该说成:x,y并没有严格规定其所引用的对象类型。

这里的所谓参数,跟前面说的变量,本质上是一回事。python中不需要提前声明变量,有的语言就需要声明。只有当用到该变量的时候,才建立变量与对象的对应关系,否则,关系不建立。而对象才有不同的类型。那么,在add(x,y)函数中,x,y在引用对象之前,是完全自由的,也就是它们可以引用任何对象,只要后面的运算许可,如果后面的运算不许可,则会报错。

>>> add("qiw","sir")    #这里,x="qiw",y="sir",让函数计算x+y,也就是"qiw"+"sir"
'hiekay'

>>> add("hiekay",4)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 2, in add
TypeError: cannot concatenate 'str' and 'int' objects  #仔细阅读报错信息,就明白错误之处了

从实验结果中发现:x+y的意义完全取决于对象的类型。在python中,将这种依赖关系,称之为多态。这是python和其它的静态语言的重要区别。在python中,代码不关心特定的数据类型。

对于python中的多态问题,以后还会遇到,这里仅仅以此例子显示一番。注意:python中为对象编写接口,而不是为数据类型。

此外,也可以将函数通过赋值语句,与某个变量建立引用关系:

>>> result = add(3,4)
>>> result
7

在这里,其实解释了函数的一个秘密。add(x,y)在被运行之前,计算机内是不存在的,直到代码运行到这里的时候,在计算机中,就建立起来了一个对象,这就如同前面所学习过的字符串、列表等类型的对象一样,运行add(x,y)之后,也建立了一个add(x,y)的对象,这个对象与变量result可以建立引用关系,并且add(x,y)将运算结果返回。于是,通过result就可以查看运算结果。

调用函数

为什么要写函数? 之所以使用函数,主要是:

  1. 降低编程的难度,通常将一个复杂的大问题分解成一系列更简单的小问题,然后将小问题继续划分成更小的问题,当问题细化为足够简单时,就可以分而治之。为了实现这种分而治之的设想,就要通过编写函数,将各个小问题逐个击破,再集合起来,解决大的问题。(请注意,分而治之的思想是编程的一个重要思想,所谓“分治”方法也。)
  2. 代码重(chong,二声音)用。在编程的过程中,比较忌讳同样一段代码不断的重复,所以,可以定义一个函数,在程序的多个位置使用,也可以用于多个程序。当然,后面我们还会讲到“模块”(此前也涉及到了,就是import导入的那个东西),还可以把函数放到一个模块中供其他程序员使用。也可以使用其他程序员定义的函数(比如import ...,前面已经用到了,就是应用了别人——创造python的人——写好的函数)。这就避免了重复劳动,提供了工作效率。

这样看来,函数还是很必要的了。废话少说,那就看函数怎么调用吧。以add(x,y)为例,前面已经演示了基本调用方式,此外,还可以这样:

>>> def add(x,y):       #为了能够更明了显示参数赋值特点,重写此函数
...     print "x=",x    #分别打印参数赋值结果
...     print "y=",y
...     return x+y
... 
>>> add(10,3)           #x=10,y=3
x= 10
y= 3
13
>>> add(x=10,y=3)       #同上
x= 10
y= 3
13
>>> add(y=10,x=3)       #x=3,y=10
x= 3
y= 10
13
>>> add(3,10)           #x=3,y=10
x= 3
y= 10
13

在定义函数的时候,参数可以想前面那样,等待被赋值,也可以定义的时候就赋给一个默认值。例如:

>>> def times(x,y=2):       #y的默认值为2
...     print "x=",x
...     print "y=",y
...     return x*y
... 
>>> times(3)                #x=3,y=2
x= 3
y= 2
6

>>> times(x=3)              #同上
x= 3
y= 2
6

>>> times(3,4)              #x=3,y=4,y的值不再是2
x= 3
y= 4
12

>>> times("hiekay")         #再次体现了多态特点
x= hiekay
y= 2
'hiekayhiekay'

注意事项

下面的若干条,是常见编写代码的注意事项:

  1. 别忘了冒号。一定要记住符合语句首行末尾输入“:”(if,while,for等的第一行)
  2. 从第一行开始。要确定顶层(无嵌套)程序代码从第一行开始。
  3. 空白行在交互模式提示符下很重要。模块文件中符合语句内的空白行常被忽视。但是,当你在交互模式提示符下输入代码时,空白行则是会结束语句。
  4. 缩进要一致。避免在块缩进中混合制表符和空格。
  5. 使用简洁的for循环,而不是while or range.相比,for循环更易写,运行起来也更快
  6. 要注意赋值语句中的可变对象。
  7. 不要期待在原处修改的函数会返回结果,比如list.append()
  8. 一定要之用括号调用函数
  9. 不要在导入和重载中使用扩展名或路径。
目录
相关文章
|
12天前
|
Python
python函数的参数学习
学习Python函数参数涉及五个方面:1) 位置参数按顺序传递,如`func(1, 2, 3)`;2) 关键字参数通过名称传值,如`func(a=1, b=2, c=3)`;3) 默认参数设定默认值,如`func(a, b, c=0)`;4) 可变参数用*和**接收任意数量的位置和关键字参数,如`func(1, 2, 3, a=4, b=5, c=6)`;5) 参数组合结合不同类型的参数,如`func(1, 2, 3, a=4, b=5, c=6)`。
14 1
|
27天前
|
Python
Python函数使用(四)
Python函数使用(四)
60 0
|
5天前
|
Serverless 开发者 Python
《Python 简易速速上手小册》第3章:Python 的函数和模块(2024 最新版)
《Python 简易速速上手小册》第3章:Python 的函数和模块(2024 最新版)
37 1
|
5天前
|
索引 Python
Python高维变量选择:SCAD平滑剪切绝对偏差惩罚、Lasso惩罚函数比较
Python高维变量选择:SCAD平滑剪切绝对偏差惩罚、Lasso惩罚函数比较
|
7天前
|
Python
python学习-函数模块,数据结构,字符串和列表(下)
python学习-函数模块,数据结构,字符串和列表
46 0
|
7天前
05-python之函数-函数的定义/函数的参数/函数返回值/函数说明文档/函数的嵌套使用/函数变量的作用域
05-python之函数-函数的定义/函数的参数/函数返回值/函数说明文档/函数的嵌套使用/函数变量的作用域
|
8天前
|
Python
python学习10-函数
python学习10-函数
|
8天前
|
Python
python学习4-内置函数range()、循环结构、循环控制语句、else语句、嵌套循环
python学习4-内置函数range()、循环结构、循环控制语句、else语句、嵌套循环
|
11天前
|
测试技术 开发者 Python
Python中的装饰器:优雅而强大的函数修饰工具
在Python编程中,装饰器是一种强大的工具,用于修改函数或方法的行为。本文将深入探讨Python中装饰器的概念、用法和实际应用,以及如何利用装饰器实现代码的优雅和高效。
|
16天前
|
Python
Python函数学习应用案例详解
【4月更文挑战第7天】学习Python函数的应用,包括计算两数之和、判断偶数、计算阶乘、生成斐波那契数列及反转字符串。示例代码展示了函数接收参数和返回结果的功能,如`add(a, b)`求和,`is_even(num)`判断偶数,`factorial(n)`计算阶乘,`fibonacci(n)`生成斐波那契数,以及`reverse_string(s)`反转字符串。
14 1