Python -- 函数

本文详细介绍了Python中的函数,包括如何定义和调用函数、传递参数、返回值、局部和全局变量的概念,以及如何通过函数实现特定功能。通过示例展示了函数在不同场景下的应用,如多个参数的处理和返回值的计算。最后,提供了两个练习,帮助读者巩固函数的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、函数:

函数,就是完成某个工作的代码块,用来构建更大程序的一个小部分,就像积木搭房子一样

创建一个函数:

# 定义一个函数

def printMyAddress():

    print ("Candy")

    print ("123 Street")

    print ("Ottawa,Ontario,Canada")

    print ("k 123")

    print ("Done")

 

# 调用一个函数

printMyAddress()

 

def块中的代码并不是主程序的一部分,程序运行时会跳过这一部分,从def块以外的第一行代码开始运行:

1、从printMyAddress()开始,这个是主程序

2、调用函数时,跳到函数中的第一行代码

3、执行函数的每一行代码

4、函数完成时,从离开主程序的那个位置继续执行

 


2、调用函数:

只有调用函数,才会执行

语法:函数名(参数arguments)     # 参数可以没有

用途:1、在不同的地方反复调用 (循环就无法满足不同地方了)

           2、每次运行都有不同表现

 


3、向函数传递参数

定义一个变量(不加引号就是变量),变量name会填入调用函数时为它传入的任何参数

语法:函数名(参数值)

 

# 定义一个函数

def printMyAddress(name):     # 参数名!!!

    print (name)    # 变量不能加引号!!!

    print ("123 Street")

    print ("Ottawa,Ontario,Canada")

    print ("k 123")

    print()    # 有括号,别忘了

 

# 调用一个函数

printMyAddress("apple")

# 调用一个函数

printMyAddress("banana")

# 调用一个函数

printMyAddress("candy”)

 

结果:

apple
123 Street
Ottawa,Ontario,Canada
k 123

banana
123 Street
Ottawa,Ontario,Canada
k 123

candy
123 Street
Ottawa,Ontario,Canada
k 123

 


4、有多个参数的函数

2个参数:

 

# 定义一个函数

def printMyAddress(name,houseNo):     # 参数名!!!

    print (name)    # 变量不能加引号!!!

    print ("123 Street")

    print ("Ottawa,Ontario,Canada")

    print (houseNo)

    print()    # 有括号,别忘了

 

# 调用一个函数

printMyAddress("apple","1")   # 用逗号分割多个参数,像列表一样!!!

 

结果:

apple
123 Street
Otawa,Ontario,Canada
1

 

5、6个参数:把参数放到一个列表中,这样只传递一个变量(列表变量),含了一组值

 

# 定义一个函数

def printMyAddress(a):     # 参数名!!!

    print (a[0])                     # 变量不能加引号!!!a[0] 的格式!!!

    print (a[1])

    print (a[2])

    print (a[3])

    print()    # 有括号,别忘了

 

l=["candy","123 Street","Ottawa,Ontario,Canada","22"]

# 调用一个函数

printMyAddress(l)   #

 

结果:

candy
123 Street
Ottawa,Ontario,Canada
22
 


5、返回值的函数

函数返回的值称为结果result和返回值return value,返回值会回到调用这个函数的代码

 

# 定义一个函数

def calcuTax(price,tax_rate):

    taxTotal=price+(price*tax_rate)

    return taxTotal

 

# 调用函数会返回一个值,把函数的返回值赋值给变量totalPrice

totalPrice=calcuTax(7.99,0.06)

# 把函数的返回值赋值,在另一个表达式中使用

total=calcuTax(7.99,0.06)+calcuTax(3.33,0.06)

# 或者打印出来

print (calcuTax(7.99,0.06))

# 不做任何处理

calcuTax(7.99,0.06)

 


6、变量作用域

Total 和 totalPrice是贴在同一个东西上的两个标签

对于函数而言,函数内的名字只是在函数运行时才会创建,在函数运行之前或者完成执行之后甚至根本不存在。Python提供了内存管理,自动完成这个工作

在函数运行时会创建新的名字在函数内使用,当函数完成时会把他们删除

在函数运行结束时,其中的所有名字都不再存在!!!

函数运行时,函数之外的名字被搁置一边,没有用到。只有函数内部的名字会被用到。

程序中使用变量的部分,叫这个变量的作用域

 

局部变量:

如果变量只在函数内使用,这些变量是局部变量 (local)

使用范围:函数内;在函数外不能使用:函数外打印局部变量,会报错:name ‘price’ is not defined

函数运行时,局部变量才存在

 

# 定义一个函数

def calcuTax():

    tax_rate =2.9

 

print("局部变量:",tax_rate)

 

结果:

Traceback (most recent call last):
  File "/Users/rlj/Desktop/python学习/1.py", line 8, in <module>
    print("局部变量:",tax_rate)
NameError: name 'tax_rate' is not defined

 

全局变量:

函数之外定义的变量是全局变量 (global)

使用范围:任何地方使用

                  在函数内可以使用,但是不要试图改变它;

                  任何部分试图改变全局变量,需要创建一个新的局部变量。所以不会影响全局变量的值,如下:

 

# 定义一个函数

def calcuTax():

    tax_rate =2.9

    print ("生成的局部变量:",tax_rate)

    return tax_rate

 

tax_rate= 3

print("全局变量:",tax_rate)

calcuTax()

print("全局变量:”,tax_rate)

 

结果:

全局变量: 3
局部变量: 2.9
全局变量: 3

 


7、强制为全局

从函数内改变一个全局变量的值,需要用global关键字。

python不会建名为tax_rate的局部变量,而是使用名为tax_rate的全局变量;

如果没有名为tax_rate的全局变量,就创建一个

 

# 定义一个函数

def calcuTax():

    # 强制为全球变量要分两行,否则报错,但是不建议这样用!!

    global tax_rate

    tax_rate =2.9

    print ("生成的局部变量:",tax_rate)

    return tax_rate

 

tax_rate= 3

print("全局变量:",tax_rate)

calcuTax()

print("全局变量:",tax_rate)    # 值就变了

 

结果:

全局变量: 3
生成的局部变量: 2.9
全局变量: 2.9


练习1: 

# 定义一个函数

def info(name,add,street,city,province,zipcode,country):  # 记得写参数名

    print (name)

    print (add)

    print (street)

    print (city)    

    print (province)

    print (zipcode)

    print (country)

    print()    # 有括号,别忘了

 

def info2(l):

    print (l[0])

    print (l[1])

    print (l[2])

    print (l[3])

    print (l[4])

    print (l[5])

    print (l[6])

    print()

 

info("a","sdf","1 street","beijing","beijing","100000","china")

info2(["a","sdf","1 street","beijing","beijing","100000","china”])

 


练习2: 输入硬币个数,并计算总和

 

代码1:

# 定义一个函数

def calcuMoney(num):

    print ("5分: ",num[0])   # 如果直接传入列表,num[0] 是 int

    print ("2分: ",num[1])

    print ("1分: ",num[2])

    print ("total is: %d" %(num[0]*5+num[1]*2+num[2]*1) )

 

calcuMoney([1,1,1])

 

结果:

5分:  1
2分:  1
1分:  1
total is: 8

 

代码2:

# 定义一个函数

def calcuMoney(num):

    print ("5分: ",num[0])   # num[0] 是 str

    print ("2分: ",num[1])

    print ("1分: ",num[2])

    print ("total is: %d" %(int(num[0])*5+int(num[1])*2+int(num[2])*1) )

 

input_number=input("请输入5分、2分、1分各几个,用空格分开:")   # 是str类型

calcuMoney(list(input_number.split()))

 

结果:

请输入5分、2分、1分各几个,用空格分开:1 2 3
5分:  1
2分:  2
1分:  3
total is: 12

 

知识点:

>>> input_number=input("请输入5分、2分、1分各几个,用空格分开:")
请输入5分、2分、1分各几个,用空格分开:1 2 3
>>> print(input_number)
1 2 3
>>> type(input_number)
<class 'str'>
>>> input_number.split()
['1', '2', '3’]   里面是字符串
>>> list(input_number.split())
['1', '2', '3']
>>> list(input_number.split())[0]
‘1’    str型
>>> l=[1,2,3]
>>> l[0]
1      int型

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值