learn with python-第三章:函数

第三章:函数
3.1函数调用
在前面我们已经看过一些函数调用
>>>type("32")
<type 'string'>
函数的名字是type,该函数打印变量的类型,括号中的值或者变量被称之为函数的参数,通常的说法是函数接受参数,返回结果。我们也可以将返回值赋给一个变量
>>> betty = type("32")
>>> print betty
<type 'string'>
另外一个例子,函数id接受一个值或者一个变量,返回一个数字作为该值得唯一标识:
>>> id(3)
134882108
>>> betty = 3
>>> id(betty)
134882108
每个值都有一个id,这是一个唯一的字符串,和存储在内存中的位置有关,变量的id是id函数的返回值。

3.2类型转化
python提供了大量的内置函数进行类型的转换,int函数接受一个值将其转换成为数字。
>>> int("32")
32
>>> int("Hello")
ValueError: invalid literal for int(): Hello
也可以将浮点数转化成为int,但是会有精度的损失
>>> int(3.99999)
3
>>> int(-2.3)
-2
float函数将参数转变成为浮点类型
>>> float(32)
32.0
>>> float("3.14159")
3.14159
str函数将参数转化成为string类型
>>> str(32)
'32'
>>> str(3.14149)
'3.14149'

3.3强制类型转换
现在我们可以在两种类型之间进行转换,我们有另外一种方式处理整数相除,回到先前章节的示例中,如果我们想要计算一个小时已经过去的部分,通过分钟/60,这是一个整数运算,所以结果永远是0,即使一个小时已经过去59分钟
我们可以将分钟转换陈给float类型
>>> minute = 59
>>> float(minute) / 60.0
0.983333333333

3.4数学函数
在数学中,我们可能看到类似于sin或者log的函数,你会学会计算sin(pi/2)以及log(1/x)这类表达式,首先我们计算参数的值,然后参数应用于函数。python有数学库提供大部分的数学计算,模块值得是包含相类似函数的一个文件。在我们使用模块之前,我们需要导入他们:
>>>import math
我们明确模块以及方法的名称来调用某个函数,
>>> decibel = math.log10 (17.0)

3.6添加一些新的函数
目前为止,我们仅仅使用python内置的函数,我们也可以添加自己的函数,自定义一个函数解决特定的问题在编程中特别有用,在程序世界中,函数指的是一些列命名了的语句的的集合,具体的操作在函数体中进行定义,,目前我们使用的函数的实现对于我们来说是不可见的,我们可以不用关心其具体实现,
定义函数的语法规则:
def name(list of parameters):
    statements
可以将函数命名为除了关键字之外任意有效的变量名。一个函数中可以有任意数量的申明语句。但是他们必须从左边缩进,本书的实例会使用两个空格的缩进。
def newLine(): 
print
调用自定义的函数方式和调用内置函数方式一样
print "First Line."
newLine()
print "Second Line."

注意两件事:
1.可以重复调用一个函数多次,这非常常见及有用。
2.可以在一个函数中调用另外一个函数。


3.7定义和使用

3.8执行流
为了确保函数在调用之前定义了,我们必须知道语句执行的顺序,称之为执行流。
程序从第一条语句开始执行,从上至下。函数定义不改变程序的执行顺序,但是需要记住的是,在函数调用之前,函数内部额语句是不会被执行的,我们可以在函数的内部定义另外一个函数,这种情况下,外部的函数被调用这前内部的函数不会被调用。

3.9Parameters and arguments
一些内置的函数需要参数,这些值控制着函数如何执行,例如:如果你想计算一个数的sin值,那么你必须告诉函数这个数是多少,函数sin接受一个数字作为形参。在函数内部,这些值会被传递给称之为 Parameters的变量。
下面是自定义的包含一个参数的函数
def printTwice(bruce):
    print(bruce)
    print(bruce)

3.10变量以及参数都是局部的
当你在函数内部创建一个局部变量的时候,它只在函数内部存在,函数外是不可见的。

3.11堆栈图
在构建一个堆栈图的时候,追踪变量可用范围是非常有用的,通状态图一样,堆栈图显示了每个变量的值,同时也显示了变量所属的函数。
每个函数都代表一帧,帧包含了函数名以及函数内部的变量,之前示例的堆栈图如下:

栈的顺序显示了执行流,printTwice被catTwice调用,catTwice被main函数调用,当你在函数外创建一个变量的时候,这个变量就属于main函数。
当函数调用发生错误的时候,python一次打印函数的调用直到回溯到main函数。

3.12带返回结果的函数
目前使用的函数有的有返回结果,有的没有返回结果,让我们思考一些问题:
1.如果对函数的结果不进行处理会有有什么结果?
2.如果没有返回结果的函数作为表达式的一部分会怎么样?
3.可以自定义带返回结果的函数吗,还是仅仅只能使用没有返回结果的简单函数?
对于这些问题的答案都是肯定的,我们会在第五章中进行讨论。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值