~欢迎进来我的博客~蛋叔的小乖乖~

父与子的编程---函数

学到什么:

  • 什么是函数
  • 什么是参数(argument 或 parameter)。
  • 如何向函数传递一个参数。
  • 如何向函数传递多个参数
  • 如何让函数向调用者返回一个值。return
  • 变量作用域是什么,什么是局部变量和全局变量。
  • 如何在函数中使用全局变量。global

 

要把程序分解成较小的部分,主要有 3 种方法。

  1. 函数(function)就像是代码的 积木,可以反复地使用。
  2. 利用对象(object),可以把程序中的各部分描述为自包含 的单元。
  3. 模块(module)就是包含程序各部分的单独的文件。

 最简单地讲,函数就是可以完成某个 工作的代码块。这是可以用来构建更大 程序的一个小部分。可以把这个小部分 与其他部分放在一起,就像用积木搭房 子一样。

创建或定义函数要使用 Python 的 def关键 字。

创建一个函数

def printMyAddress():   

print "Warren Sande"   

print "123 Main Street"   

print "Ottawa, Ontario, Canada"   

print "K2M 2E9"    print

printMyAddress()

 

 

 

调用函数

调用函数是指运行函数里的代码。如果我们定义了一个函数,但是从来不调用 它,这些代码就永远也不会运行。
调用函数时要使用函数名和一对括号。有时括号里还会有些东西,有时也可能 什么也没有。
 使用函数还有一个原因,每次函数运行时可以让它有 不同的表现。

向函数传递参数

你希望对你的所有家庭成员使用这个地址打印函数。所有人的地址都是一样的,但是每一次人名会有所不同。

def printMyAddress(myName):   

print myName                   

print "123 Main Street"              

print "Ottawa, Ontario", Canada    print "K2M 2E9"                      

print

printMyAddress("Carter Sande")

 

 

 

有多个参数的函数

 

谈到向函数传递信息时,你可能还会听到这样一个词:形参(parameter)。有些人 说参数(argument)和形参(parameter)可以互换。所以你可以说, “我向这个函数传递两个形参(parameter)”,或者 “我向这个函数传递两个参数(argument)”。
不过有些人认为,谈到传递部分(调用函数)时应当称作实参(argument),而谈到 接收部分(函数内部)时应该称为形参(parameter)。

使用参数(不论是 argument 还是 parameter)讨论向函数传递值时,程序员都明 白你是什么意思。

每一个人发送卡特的信,我们的地址打印函数需要两个参数:一 个对应人名,另一个对应门牌号码:

def printMyAddress(someName, houseNum):   

print someName    

print houseNum,   

print "Main Street"              

print "Ottawa, Ontario, Canada"             

print "K2M 2E9"                      

print  

printMyAddress("Carter Sande", "45")

printMyAddress("Jack Black", "64")

printMyAddress("Tom Green", "22")

printMyAddress("Todd White", "36")

 

 

 如果你的函数有超过 5 到 6 个参数,可能就应该考虑采用别的做法了,一种做法的把所有参数收集到一个列表,然后把这个列表传递到函数,这样一来,就只是传递 一个变量(列表变量),只不过其中包含有一组值。这样可以让你的代码更易读。

返回值的函数

函数只是为我们做一些工作。不过函数的一个突出作用是:它们还 可以向你发回一些东西。可以向函数发送信息(参数),不过函数还可以向调用者发回信 息。从函数返回的值称为结果(result)或返回值(return value)。

返回一个值

让函数返回一个值,需要在函数中使用 Python 关键字 return

 

 

 

 

 

 

 

 变量作用域

对于函数而言,函数内的名字只是在函数运行时才会创建。在函数运行之前或者完成运行之后甚至根本不存在。python提供了内存管理器(memory management)可以自动完成这个工作。Python 在函数运行时会创建新的名字在函数内使用,当函数完成时会把它们删除。最后这部分很重要:函数运行结束时,其中的所有名字都不再存在。

局部变量

a,b,total是函数test的局部变量

全局变量

我们使用全局变量( global)表示有更大作用域的变量。在这种情况下,更大是指程序的主部分,而不是函数内部。完全可以在另一个位置使用变量,它们仍然有之前给定的值。它们仍在合法的作用城中(in scope)。因为我们可以在程序的任何地方使用这些变量,所以把它们称作全局变量(global variable)。

 

 

 

总结:在函数外打印局部变量会报错;在函数内可打印全局变量,如果内部重新赋值了和全局变量同名的变量,打印结果不同,为两个同名的不同变量(一个为局部变量,一个为全局变量),如果没有重新赋值,打印结果函数外和函数内结果一样,为同一个变量。

强制为全局:关键字global

 

如果试图从函数内改变一个全局变量的值,会在函数内创建一个新的局部变量,那么为了防止函数改变全局变量的值,客园用还关键字global来做。

如果使用 global 关键字,Python 不会建立同名的局部变量,而是 会使用同名 的全局变量。另外,如果还没有定义此名的全局变量, Python 就会创建一个。

 

 

 

关于变量命名的一点建议

强烈建议你不要重复使用变量名。容易出bug。

 

posted @ 2019-12-14 17:30  qq的天马行空  阅读(95)  评论(0)    收藏  举报
蛋叔的小乖乖