1.3.0 Python函数-理解函数

在中学数学中,可以用这样的方式定义函数:y=4x+3,这就是一个一次函数,当然,也可以写成:f(x)=4x+3。其中x是变量,它可以代表任何数。
变量x只能是任意数吗?其实,一个函数,就是一个对应关系。x不仅仅是数,还可以是你认为的任何东西。变量本质上是占位符
定义函数的格式为:
def 函数名(参数1,参数2,...,参数n):
函数体(语句块)
1,创建简单函数
>>> a=2
>>> y=3*a+2
>>> y
8
这种方式建立的函数,与在初中数学中学习的没有什么区别。
输入a=3,然后输入y,看看得到什么结果呢?
>>> a=3
>>> y
8
是不是很奇怪?已经让a等于3了,为什么结果y还是8?
a=2的含义是将2这个对象贴上了变量a的标签,经过计算,得到了8,之后变量y引用了对象8。当变量a引用的对象修改为3的时候,但是y引用的对象还没有变,所以还是8。
>>> y=3*a+2
>>> y
11
再引用计算一次,就是自己想要的结果了; 特别注意,如果没有预先令a=2,直接写函数表达式则会报错。
2,创建实用函数
创建一个2018-3-20.py文件:
#! /usr/bin/env python
#coding:utf-8

def add_fun(a,b):
c = a+b
print c

if __name__ == "__main__":
add_fun(2,3)
运行结果:
>>> ================================ RESTART ================================
>>>
5
>>>
如果没有得到上面的结果,就要非常认真地检查代码,注意,冒号和空格都得一样,因为冒号和空格也很重要( 下划线是2个英文下划线)
def add_fun(a,b):这是函数的开始。在声明要建立一个函数的时候,一定要使用def(def就是英文define的前三个字母),意思就是告知计算机,这里要声明一个函数;add_function是这个函数名称,取名字是有讲究的,就好比你的名字一样。(在Python中取名字的讲究就是要有一定意义,能够从名字中看出这个函数是用来干什么的。)
c=a+b:这一行比上一行要缩进四个空格。这是Python的规定,要牢记,不可丢掉,丢了就报错。然后这句话就是将两个参数相加,结果赋值与另外一个变量c。
print c:还是提醒注意,缩进四个空格。将得到的结果c的值打印出来。
if__name__=="__main__":触发运行的主函数
add_fun(2,3):这才是真正调用前面建立的函数,并且传入两个参数:a=2,b=3。
几点说明
函数名的命名规则要符合Python中的命名要求。一般用小写字母和单下画线、数字等组合。
def是定义函数的关键词,这个简写来自英文单词define。
函数名后面是圆括号,括号里面,可以有参数列表,也可以没有参数。
千万不要忘记了括号后面的冒号。
函数体(语句块),相对于def缩进,按照Python的习惯,缩进四个空格。
>>> def test(): #定义一个无参数的函数
print "hello!" #缩进4个空格

>>> test() #调用函数,打印结果
hello!
>>> def add(a,b): #定义一个非常简单的函数
return a+b #缩进4个空格

>>> add(3,4) #计算3+4
7
注意上面的add(a,b)函数,没有特别规定参数“x,y”的类型。
>>> add("he","llo")
'hello'
>>> add("hello","2")
'hello2'
>>> add("hello",2)

Traceback (most recent call last):
File "<pyshell#10>", line 1, in <module>
add("hello",2)
File "<pyshell#6>", line 2, in add
return a+b
TypeError: cannot concatenate 'str' and 'int' objects
从实验结果中发现:x+y的意义完全取决于对象的类型。
此外,也可以将函数通过赋值语句与某个变量建立引用关系:
>>> a = add(4,5)
>>> a
9
总结函数命名:
文件名:全小写,可使用下画线。
函数名:小写,可以用下画线风格单词以增加可读性。如:my_function、my_example_function。注意:混合大小写仅被允许用于这种风格已经占据优势的时候,以便保持向后兼容。有的人喜欢用这样的命名风格:myFunction,除了第一个单词首字母外,后面的单词首字母大写。这也是可以的,因为在某些语言中就习惯如此。
函数的参数:如果一个函数的参数名称和保留的关键字冲突,通常使用一个后缀下画线。
变量:变量名全部小写,由下画线连接各个单词。如color=WHITE,this_is_a_variable=1。
3,调用函数
之所以使用函数主要原因是:
降低编程的难度,通常将一个复杂的大问题分解成一系列更简单的小问题,然后将小问题继续划分成更小的问题,当问题细化为足够简单时,就可以分而治之。为了实现这种分而治之的设想,就要通
过编写函数,将各个小问题逐个击破,再集合起来,解决大的问题。(请注意,分而治之的思想是编程的一个重要思想,所谓“分治”方法也。)
代码重用。在编程的过程中,比较忌讳同样一段代码不断重复,所以,定义一个函数,可以多次被使用。当然,后面我们还会讲到“模块”,还可以把函数放到一个模块中供其他程序员使用。也可以使用其他程序员定义的函数(比如import,前面已经用到了,就是应用了别人——创造Python的人——写好的函数),这就避免了重复劳动,提高了工作效率。
>>> def add(a,b):
print "a=", a
print "b=", b
return a+b

>>> add(3,4)
a= 3
b= 4
7
>>> add(4,3)
a= 4
b= 3
7
所谓调用,最关键是要弄清楚如何给函数的参数赋值。这里就是按照参数次序赋值,根据参数的位置,值与之对应。
还可以直接把赋值语句写到里面,就明确了参数和对象的关系。
>>> add(a=10,b=8)
a= 10
b= 8
18
>>> add(b=8,a=10)
a= 10
b= 8
18
在定义函数的时候,参数可以像前面那样等待被赋值,也可以定义的时候就赋给一个默认值。
>>> def test(a,b=10):
print "a=", a
print "b=", b
print a+b

>>> test(1)
a= 1
b= 10
11
>>> test(a=2)
a= 2
b= 10
12
>>> test(2,3)
a= 2
b= 3
5
注意事项:
别忘了冒号。一定要记住符合语句首行末尾输入“:”(if,while,for等的第一行)。
从第一行开始。要确定顶层(无嵌套)程序代码从第一行开始。空白行在交互模式提示符下很重要。模块文件中符合语句内的空白行常被忽视。但是,当你在交互模式提示符下输入代码时,空白行则会结束语句。
缩进要一致。避免在块缩进中混合制表符和空格。
使用简洁的for循环,而不是while or range。相比,for循环更易写,运行起来也更快。
要注意赋值语句中的可变对象
不要期待在原处修改的函数会返回结果,比如list.append(),这在可修改的对象中要特别注意。
调用函数时,函数名后面一定要跟随着括号,有时候括号里面就是空空的,有时候里面放参数。
不要在导入和重载(先记住有这样一个名词,后面会反复出现,慢慢就能理解含义了,实在忍不住就搜索一下。)中使用扩展名或路径。
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: scipy1.3.0对应的是Python语言。Scipy是一个用于科学计算的Python库,它提供了许多对数学、科学和工程计算非常有用的函数和模块。而scipy1.3.0是scipy的特定版本号,它适用于Python编程语言。在Python环境中使用Scipy库进行科学计算和数据处理时,需要确保Scipy库的安装版本与Python版本兼容。因此,scipy1.3.0对应的是Python编程语言,可以在Python环境中使用该版本的Scipy库。 ### 回答2: scipy是一个用于科学计算的Python库,可以解决各种问题,包括线性代数、优化、信号处理、图像处理、数值积分和常微分方程求解等。scipy的版本号是与其对应的python版本号无关的,可以在多个版本的python下使用。 然而,scipy的版本号通常会与其所依赖的numpy库的版本号相关。scipy需要依赖于numpy库来进行数组操作和数值计算。numpy的版本号通常与其对应的python版本有关。 以scipy1.3.0为例,一般来说,scipy1.3.0需要和numpy1.17.0及以上版本配合使用。而numpy的版本号通常与其所支持的python版本相关。例如,numpy1.17.0支持Python 2.7和Python 3.4及以上版本。 因此,可以总结出,scipy1.3.0可以在支持numpy1.17.0及以上版本的Python 2.7和Python 3.4及以上版本中使用。但是请注意,这只是一个通常的情况,具体的兼容性还需要查看scipy和numpy的官方文档。 ### 回答3: Scipy 1.3.0对应的Python版本是Python 3.5及以上版本。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值