Python——函数

文章目录

    • 一、创建函数
    • 二、调用函数
    • 三、向函数传递参数
    • 四、多个参数的函数
    • 五、返回值
    • 六、变量作用域
      • (1) 局部变量
      • (2) 全局变量
    • 七、小练习

当程序越来越大时,需要一些方法把他们分成较小的部分进行组织,这样更容易编写,也更容易明白。

要把程序分解成较小的部分,主要有3种方法。函数就像是代码的积木,可以反复到使用。利用对象,可以把程序的各个部分描述为自包含的单元。模块就是包含程序各部分的的单独文件。

一、创建函数

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

def printSmoething(): #用def定义一个函数,函数名为printSmothing()
        print "LSM"
        print "YMY"
        print "Fairy"
        print "Little fairy man"
        print
        
printSmoething() #调用函数。程序就是从这里开始运行的。

在这里插入图片描述
第1行中,使用def关键字定义了一个函数。函数名后边有一对括号“( )”,然后是冒号。这个冒号和for循环、if语句等中的冒号用法一样。

二、调用函数

调用函数就是运行函数中的代码。假若定义一个函数,但是从来不调用,这些代码就永远不会运行。

上例中,就算我们不定义函数仍然可以输出同样的结果:

print "LSM"
print "YMY"
print "Fairy"
print "Little fairy man"

那我们为什么要自找麻烦呢让程序更复杂呢?

使用函数的主要原因是,一旦定义了函数,就可以通过调用反复使用,我们如果想把以上内容打印5次,只需调用函数5次即可:

printSmoething() 
printSmoething() 
printSmoething() 
printSmoething() 
printSmoething() 

Python——函数_第1张图片
当然,也有人可能说,我用循环也能做到。确实没错~~但是如果在程序不同位置打印,而不是全部一次完成,循环是不是就不行了呢。

三、向函数传递参数

前边说到定义函数后要加一个“( )”,它就是用来传递参数的。
如下:

def mathMark(myName):
        print myName
        print "80"
        print
mathMark("YMY")

在这里插入图片描述
这看起来好像也没什么。接着看:

def mathMark(Name):
        print Name
        print "The score is 80"
        print
mathMark("YMY")
mathMark("LSM")
mathMark("Cat")

Python——函数_第2张图片

每次调用输入的参数不同,人名会变,因为我们每次都向函数传入了不同的人名。

四、多个参数的函数

如果我们每个人的成绩不一样,那要怎么办呢?我们在上例只用名字一个参数,完全可以再添加一个分数的参数。顺便说一下:调用函数时称为实参,定义函数时称为形参

def mathMark(name,score):
        print name
        print "The score is ",score
        print
mathMark("YMY","80")
mathMark("LSM","99")
mathMark("Cat","0")

Python——函数_第3张图片
虽然说参数的个数是不限制的,但是如果函数超过5-6个参数,就考虑用别的做法。一种做法是把所有的参数收集到一个列表中,然后把这个列表传递到函数。

五、返回值

函数的返回值即函数可以向调用者发回信息。

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

def calculateTax(price,tax_rate):
        taxTotal = price +(price * tax_rate)
        return taxTotal

my_price = float(raw_input("Enter a price "))

totalPrice = calculateTax(my_price,0.06)
print "price = ",my_price,"Total price = ",totalPrice

在这里插入图片描述

六、变量作用域

程序中使用或者可以使用变量的部分称为这个变量的作用域。

(1) 局部变量

在上例最后增加一行代码:

def calculateTax(price,tax_rate):
        taxTotal = price +(price * tax_rate)
        return taxTotal

my_price = float(raw_input("Enter a price "))

totalPrice = calculateTax(my_price,0.06)
print "price = ",my_price,"Total price = ",totalPrice
print price 

Python——函数_第4张图片
会出现错误,这是为什么呢?因为在calculateTax( )函数以外,变量price根本没有定义,它只是在函数运行时才存在,当函数完成时,就会被删除。试图在函数之外打印price的值,就会出现一个错误。像这个price、taxTotal、tax_rate都是一个局部变量

(2) 全局变量

与局部变量不同,全局变量可以用在函数的任意地方。

 def calculateTax(price,tax_rate):
        taxTotal = price +(price * tax_rate)
        print my_price
        return taxTotal

my_price = float(raw_input("Enter a price "))

totalPrice = calculateTax(my_price,0.06)
print "price = ",my_price,"Total price = ",totalPrice

在这里插入图片描述
在函数中打印my_price,结果正确。如果使用在主函数中定义过的变量名,Python允许使用,只要你不试图改变它。

强制为全局变量
可以用Python的关键字global来做到:

def calculateTax(price,tax_rate):
        global my_price

七、小练习

(1) 编写一个函数,用大写打印你的名字,并多次调用这个函数。

def printName():
        print "L          SSSS             M           M"
        print "L         S                M M         M M"
        print "L         S               M   M       M   M"
        print "L          SSSSS         M     M     M     M"
        print "L               S       M       M   M       M"
        print "L               S      M         M M         M"
        print "LLLLL      SSSS       M           M           M"
        print
for i in range(5):
        printName()

Python——函数_第5张图片
(2) 建立一个函数,可以手动输入并打印全世界任何人名、性别、城市、国家。

def printSomething(name,sex,city,country):
        print
        print "The name is ",name
        print "The sex is ",sex
        print "The city is ",city
        print "The country is ",country
        print
        
nam = raw_input("Enter the name: ")
se = raw_input("Enter the sex ")
cit = raw_input("Enter the city: ")
countr = raw_input("Enter the country: ")

printSomething(nam,se,cit,countr)

Python——函数_第6张图片

你可能感兴趣的:(Python)