Python函数定义、参数传递与模块调用详解
本文系统讲解Python中函数的核心概念,涵盖函数定义语法、参数传递机制(形参与实参)、返回值处理以及局部与全局变量的作用域规则。重点解析变量引用、可变与不可变类型对参数传递的影响,并详细介绍模块文件的创建、import导入方式、别名使用及__name__属性的实际应用,帮助开发者规范编写可复用代码。
Python函数的定义与应用基础
函数的定义及其实际应用
函数本质上是将具备独立功能的代码片段封装为一个小型模块,以便在需要时进行调用。使用函数主要分为两个步骤:
第一步是定义函数,即将独立功能进行封装。
第二步是调用函数,以利用已封装的功能。
函数的核心价值在于:在软件开发过程中,使用函数能够显著提升编码效率,并实现代码的高重用性。
关于函数的基本概念:
函数是带有名称的代码块,专门用于执行特定的工作任务。
当程序中需要多次执行相同任务时,无需重复编写实现代码,只需调用对应的函数,让Python执行其中的逻辑即可。实践证明,使用函数能使程序的编写、阅读、测试及调试工作变得更加简便。
1. 如何定义函数
语法格式为:def 函数名():
随后编写需要封装的代码逻辑。
1. 'def'是英文单词'define'(定义)的缩写。
2. 函数命名应准确反映其封装代码的功能,以便于后续调用和维护。
3. 函数名称必须符合Python标识符的命名规范。
标识符可由字母、下划线和数字组成。
标识符不能以数字开头。
标识符不能与Python的关键字重名。

函数参数的作用与传递机制
参数的作用解析
函数将独立功能的代码封装为小模块并在需要时调用。引入参数可以增强函数的通用性,使其针对相同的数据处理逻辑能够适应更多样的数据场景。
1. 在函数内部,将参数视为变量,执行所需的数据处理操作。
2. 调用函数时,按照函数定义中参数的顺序,将希望在函数内部处理的数据通过参数传递进去。
形参与实参的区别
形参:定义函数时,小括号内的参数用于接收传入的数据,在函数内部作为变量使用。
实参:调用函数时,小括号内的参数用于将具体数据传递到函数内部进行处理。
函数返回值与变量作用域管理
函数的返回值机制
在程序开发中,有时需要函数执行完毕后(例如温度计函数需返回当前温度),向调用者返回一个结果,以便调用者根据具体结果进行后续处理。
返回值是函数完成工作后,最终返回给调用者的结果。
在函数内部使用'return'关键字即可返回结果。
调用函数的一方,可以使用变量来接收函数的返回结果。

局部变量与全局变量的区别
局部变量是在函数内部定义的变量,其作用范围仅限于函数内部。
全局变量是在函数外部定义的变量(未定义在任何一个函数内),所有函数内部均可访问该变量。
局部变量的特性
局部变量是在函数内部定义的变量,只能在函数内部使用。
当函数执行结束后,函数内部的局部变量会被系统回收。
不同的函数可以定义名称相同的局部变量,它们各自独立使用,互不干扰。
局部变量的作用
在函数内部使用,用于临时保存函数执行过程中需要使用的数据。


变量引用、类型与进阶概念
变量进阶知识
学习目标
理解变量的引用机制
区分可变和不可变类型
掌握局部变量和全局变量的作用域
深入理解变量的引用
变量和数据均存储在内存中。
在Python中,函数的参数传递以及返回值的传递均依赖于引用传递机制。
引用的概念解析
在Python语言中:
变量和数据是分开存储的。
数据存储在内存的某个特定位置。
变量中保存的是该数据在内存中的地址。
变量中记录数据的地址,这一行为称为引用。
可以使用id()函数查看变量中保存数据所在的内存地址。

Python模块文件的跨文件调用指南
二、函数的跨文件调用方法
模块文件:每一个Python源文件均可视为一个模块文件。可以在一个Python文件中定义函数或变量,然后在另一个文件中通过'import filename'导入该模块。导入后,可以使用'模块名.变量'或'模块名.函数'的方式访问该模块文件中的函数和变量。
首先,定义一个函数。
# 1.定义一个函数,能够打印*组成的一条分隔线
def print_line():
print '*' * 50
print_line()
# 2.定义一个函数能够打印由任意字符串组成的分割线
def print_line(char):
print char * 50
print_line('&')
# 3.定义一个函数能够打印任意重复次数的分隔线
def print_line(char,times):
print char * times
print_line('%',20)
# 4.定义一个函数能够打印五行分隔线,
# 分隔线要求符合需求3
# def print_line(char,times):
# print char * times
def print_lines(char,times):
"""打印多行分隔线
:param char: 分隔线使用的分隔字符
:param times: 分隔线重复的次数
"""
row = 0
while row < 5:
print_line(char,times)
row += 1
print_lines('!',70)
模块文件:每一个python源文件都可以是一个模块文件
可以在一个python文件中定义函数或者变量
然后在另一个文件中使用 import filename 导入这个模块
导入之后,就可以使用 模块名.变量/模块名.函数的方式,
使用这个模块中定义的函数和变量
import func_04
import fun_01
print func_04.name
func_04.print_lines('*',80)
result = fun_01.sum_2_sum(3,6)
print result
2. 模块的调用方式
1.
test1文件中
title = '模块1'
# 函数
def demo1():
print '今天学习%s' %title
# 类
class Cat(object):
pass
title = '模块2'
test2文件中
# 函数
def demo1():
print '今天学习%s' %title
# 类
class Dog(object):
pass
import test1
import test2
test1.demo1()
test2.demo1()
cat = test1.Cat()
print cat
dog = test2.Dog()
print dog

使用'as'关键字指定模块的别名(通常采用大驼峰命名法)。
from test1 import Cat
# 如果重名的话,则第二个导入的覆盖同名的第一个
from test1 import demo1 as test_demo1
from test2 import demo1
cat = Cat()
print cat
test_demo1()
demo1()

2. Python解释器在导入模块时的执行流程:
1. 首先搜索当前目录中指定的模块文件,如果存在则直接导入。
2. 如果当前目录不存在,则继续搜索系统目录。
注意:在开发过程中,给文件命名时,切勿与系统内置模块文件重名。
因此,在导入文件时,不能起与系统文件重名的名字,例如以下示例中的'random'。
import random
ran = random.randint(1,10)
print ran
3. __name__属性解析
功能:确保测试模块的代码仅在测试情况下运行,而在被其他文件导入时不会被执行。
__name__是Python的一个内置属性,记录着一个字符串值。
当被其他文件导入时,__name__的值即为模块名。
如果是当前直接执行的程序,__name__的值则为'main'。
def wn():
print '今天是个好日子'
if __name__ == '__main__':
print __name__
print '模块的引用'
调用函数
import test
wn = test.wn()
print wn


以上关于Python中函数的定义及其调用方法的介绍就是全部内容,希望能对大家有所帮助,也希望大家多多支持本站。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









