Python函数定义、参数传递与模块调用详解

苏见山
苏见山
发布时间:2026-10-13 | 6人浏览过
原创

本文系统讲解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中函数的定义及其调用方法的介绍就是全部内容,希望能对大家有所帮助,也希望大家多多支持本站。

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表