京公网安备 11010802034615号
经营许可证编号:京B2-20210330
详解Python中的各种函数的使用
函数是有组织的,可重复使用的代码,用于执行一个单一的,相关的动作的块。函数为应用程序和代码重用的高度提供了更好的模块。
正如我们知道的,Python的print()等许多内置函数,但也可以创建自己的函数。这些函数称为用户定义函数。
定义一个函数
可以定义函数,以提供所需的功能。下面是简单的规则来定义Python函数。
函数块以开始关键字def后跟函数名和括号中(())。
任何输入参数或参数应该放在这些括号内。还可以定义这些括号内的参数。
函数的第一个语句可以是??一个可选的声明 - 该函数或文档字符串的文档字符串。
每个函数中的代码块以冒号(:)开头并缩进。
该语句返回[表达式]退出功能,可选地传递回一个表达式给调用者。不带参数return语句返回None。
语法:
def functionname( parameters ):
"function_docstring"
function_suite
return [expression]
默认情况下,参数具有一个位置的行为和需要,它们被定义为通知他们以相同的顺序。
例子:
这是最简单的Python函数形式。这个函数接受一个字符串作为输入参数,并打印标准的屏幕上。
def printme( str ):
"This prints a passed string into this function"
print str
return
调用函数
定义一个函数只给出它的名称,指定要被包括在功能和结构的代码块的参数。
一旦函数的基本结构确定后,可以通过从其他函数或直接从Python提示符调用它执行它。以下是示例调用printme()函数:
#!/usr/bin/python
# Function definition is here
def printme( str ):
"This prints a passed string into this function"
print str;
return;
# Now you can call printme function
printme("I'm first call to user defined function!");
printme("Again second call to the same function");
当执行上面的代码中,产生以下结果:
I'm first call to user defined function!
Again second call to the same function
引用VS值传递
所有参数(参数)在Python语言是通过引用传递。这意味着,如果你在一个函数中改变了一个参数的值,变化也反映了在调用函数中。例如:
#!/usr/bin/python
# Function definition is here
def changeme( mylist ):
"This changes a passed list into this function"
mylist.append([1,2,3,4]);
print "Values inside the function: ", mylist
return
# Now you can call changeme function
mylist = [10,20,30];
changeme( mylist );
print "Values outside the function: ", mylist
这里,我们保持传递的对象的参考,并在同一个对象附加的值。这样,这将产生以下结果:
Values inside the function: [10, 20, 30, [1, 2, 3, 4]]
Values outside the function: [10, 20, 30, [1, 2, 3, 4]]
还有就是参数通过引用传递和引用被覆盖在被调用的函数里面一个例子。
#!/usr/bin/python
# Function definition is here
def changeme( mylist ):
"This changes a passed list into this function"
mylist = [1,2,3,4]; # This would assig new reference in mylist
print "Values inside the function: ", mylist
return
# Now you can call changeme function
mylist = [10,20,30];
changeme( mylist );
print "Values outside the function: ", mylist
参数myList上局部函数changeme。更改函数内mylist不影响mylist。函数没有作用,最后这会产生以下结果:
Values inside the function: [1, 2, 3, 4]
Values outside the function: [10, 20, 30]
函数参数:
可以通过使用形参的类型如下调用函数:
必需的参数
关键字参数
默认参数
可变长度参数
必需的参数:
所需的参数为传递给正确的位置顺序的函数的参数。这里,在函数调用的参数的数目应与函数定义完全匹配。
调用函数printme(),一定要传递一个参数,否则会如下给出一个语法错误:
#!/usr/bin/python
# Function definition is here
def printme( str ):
"This prints a passed string into this function"
print str;
return;
# Now you can call printme function
printme();
当执行上面的代码,产生以下结果:
Traceback (most recent call last):
File "test.py", line 11, in <module>
printme();
TypeError: printme() takes exactly 1 argument (0 given)
关键字参数:
关键字参数是关系到函数调用。当在一个函数调用中使用关键字参数,调用者通过参数名称标识的参数。
这可以跳过参数或脱离顺序,因为Python解释器能够使用提供的参数使用匹配的值的关键字。还可以使关键字调用在以下方面printme()函数:
#!/usr/bin/python
# Function definition is here
def printme( str ):
"This prints a passed string into this function"
print str;
return;
# Now you can call printme function
printme( str = "My string");
当执行上面的代码中,产生以下结果:
My string
下面的例子给出了更清晰的画面。请注意,这里跟参数秩序没有关系。
#!/usr/bin/python
# Function definition is here
def printinfo( name, age ):
"This prints a passed info into this function"
print "Name: ", name;
print "Age ", age;
return;
# Now you can call printinfo function
printinfo( age=50, name="miki" );
当执行上面的代码,产生以下结果:
Name: miki
Age 50
默认参数:
默认参数是,假设一个默认值,如果不提供的函数调用的参数值的参数。下面的例子给出了默认参数一个主意,它会默认打印age,如果不通过传值:
#!/usr/bin/python
# Function definition is here
def printinfo( name, age = 35 ):
"This prints a passed info into this function"
print "Name: ", name;
print "Age ", age;
return;
# Now you can call printinfo function
printinfo( age=50, name="miki" );
printinfo( name="miki" );
当执行上面的代码,产生以下结果:
Name: miki
Age 50
Name: miki
Age 35
可变长度参数:
可能需要处理函数比在定义函数指定多个参数。这些参数被称为可变长度参数,在函数定义没有被命名,不像必需默认参数。
非关键字可变参数的函数的一般语法是这样的:
def functionname([formal_args,] *var_args_tuple ):
"function_docstring"
function_suite
return [expression]
星号(*)被放置,将持有的所有非关键字变量参数的值在变量名前。该元组保持为空,如果函数调用期间没有指定任何其他参数。下面是一个简单的例子:
#!/usr/bin/python
# Function definition is here
def printinfo( arg1, *vartuple ):
"This prints a variable passed arguments"
print "Output is: "
print arg1
for var in vartuple:
print var
return;
# Now you can call printinfo function
printinfo( 10 );
printinfo( 70, 60, 50 );
当执行上面的代码,产生以下结果:
Output is:
10
Output is:
70
60
50
匿名函数:
可以使用lambda关键字来创建小的匿名函数。这些函数被称为匿名,因为它们不是以标准方式通过使用def关键字声明。
Lambda形式可以采取任何数量的参数,但在表现形式上只返回一个值。它们不能包含命令或多个表达式。
匿名函数不能直接调用打印,因为需要lambda表达式。
lambda函数都有自己的命名空间,并且不能访问变量高于在其参数列表和那些在全局命名空间等。
尽管似乎lambda是一个函数的单行版本,它们不是在C或C++,其宗旨是通过调用出于性能原因在传递函数的堆栈分配相当于一行的声明。
语法
lambda函数的语法仅包含单个语句,如下:
?
1
lambda [arg1 [,arg2,.....argn]]:expression
以下为例子来说明函数lambda形式是如何工作的:
#!/usr/bin/python
# Function definition is here
sum = lambda arg1, arg2: arg1 + arg2;
# Now you can call sum as a function
print "Value of total : ", sum( 10, 20 )
print "Value of total : ", sum( 20, 20 )
当执行上面的代码,产生以下结果:
Value of total : 30
Value of total : 40
return语句:
该语句返回[表达式]退出功能,可选地传递回一个表达式给调用者。不带参数return语句返回None。
以上所有的例子都没有返回任何值,但如果喜欢,可以从一个函数返回值:
#!/usr/bin/python
# Function definition is here
def sum( arg1, arg2 ):
# Add both the parameters and return them."
total = arg1 + arg2
print "Inside the function : ", total
return total;
# Now you can call sum function
total = sum( 10, 20 );
print "Outside the function : ", total
当执行上面的代码,产生以下结果:
Inside the function : 30
Outside the function : 30
变量的作用域:
程序中的所有变量可能不会在该程序中的所有位置进行访问。这取决于所声明的变量。
变量的作用域确定了程序,可以访问一个特定的标识符的一部分。在Python中的变量两个基本范畴:
全局变量
局部变量
全局与局部变量:
这是一个函数体内部定义的变量具有局部范围,而那些之外定义具有全局范围。
局部变量只能在函数内部被声明和访问,而全局变量可以在整个程序主体由所有函数进行访问。当调用一个函数,它里面声明的变量都纳入范围。下面是一个简单的例子:
#!/usr/bin/python
total = 0; # This is global variable.
# Function definition is here
def sum( arg1, arg2 ):
# Add both the parameters and return them."
total = arg1 + arg2; # Here total is local variable.
print "Inside the function local total : ", total
return total;
# Now you can call sum function
sum( 10, 20 );
print "Outside the function global total : ", total
当执行上面的代码,产生以下结果:
Inside the function local total : 30
Outside the function global total : 0
数据分析咨询请扫描二维码
若不方便扫码,搜微信号:CDAshujufenxi
在数字化时代,数据已成为企业决策的核心驱动力,数据分析与数据挖掘作为解锁数据价值的关键手段,广泛应用于互联网、金融、医疗 ...
2026-04-17在数据处理、后端开发、报表生成与自动化脚本中,将 SQL 查询结果转换为字符串是一项高频且实用的操作。无论是拼接多行数据为逗 ...
2026-04-17面对一份上万行的销售明细表,要快速回答“哪个地区卖得最好”“哪款产品增长最快”“不同客户类型的购买力如何”——这些看似复 ...
2026-04-17数据分析师一天的工作,80% 的时间围绕表格结构数据展开。从一张销售明细表到一份完整的分析报告,表格结构数据贯穿始终。但你真 ...
2026-04-16在机器学习无监督学习领域,Kmeans聚类因其原理简洁、计算高效、可扩展性强的优势,成为数据聚类任务中的主流算法,广泛应用于用 ...
2026-04-16在机器学习建模实践中,特征工程是决定模型性能的核心环节之一。面对高维数据集,冗余特征、无关特征不仅会增加模型训练成本、延 ...
2026-04-16在数字化时代,用户是产品的核心资产,用户运营的本质的是通过科学的指标监测、分析与优化,实现“拉新、促活、留存、转化、复购 ...
2026-04-15在企业数字化转型、系统架构设计、数据治理与AI落地过程中,数据模型、本体模型、业务模型是三大核心基础模型,三者相互支撑、各 ...
2026-04-15数据分析师的一天,80%的时间花在表格数据上,但80%的坑也踩在表格数据上。 如果你分不清数值型和文本型的区别,不知道数据从哪 ...
2026-04-15在人工智能与机器学习落地过程中,模型质量直接决定了应用效果的优劣——无论是分类、回归、生成式模型,还是推荐、预测类模型, ...
2026-04-14在Python网络编程、接口测试、爬虫开发等场景中,HTTP请求的发送与响应处理是核心需求。Requests库作为Python生态中最流行的HTTP ...
2026-04-14 很多新人学完Python、SQL,拿到一张Excel表还是不知从何下手。 其实,90%的商业分析问题,都藏在表格的结构里。 ” 引言:为 ...
2026-04-14在回归分析中,因子(即自变量)的筛选是构建高效、可靠回归模型的核心步骤——实际分析场景中,往往存在多个候选因子,其中部分 ...
2026-04-13在机器学习模型开发过程中,过拟合是制约模型泛化能力的核心痛点——模型过度学习训练数据中的噪声与偶然细节,导致在训练集上表 ...
2026-04-13在数据驱动商业升级的今天,商业数据分析已成为企业精细化运营、科学决策的核心手段,而一套规范、高效的商业数据分析总体流程, ...
2026-04-13主讲人简介 张冲,海归统计学硕士,CDA 认证数据分析师,前云南白药集团资深数据分析师,自媒体 Python 讲师,全网课程播放量破 ...
2026-04-13在数据可视化与业务分析中,同比分析是衡量业务发展趋势、识别周期波动的核心手段,其核心逻辑是将当前周期数据与上年同期数据进 ...
2026-04-13在机器学习模型的落地应用中,预测精度并非衡量模型可靠性的唯一标准,不确定性分析同样不可或缺。尤其是在医疗诊断、自动驾驶、 ...
2026-04-10数据本身是沉默的,唯有通过有效的呈现方式,才能让其背后的规律、趋势与价值被看见、被理解、被运用。统计制图(数据可视化)作 ...
2026-04-10在全球化深度发展的今天,跨文化传播已成为连接不同文明、促进多元共生的核心纽带,其研究核心围绕“信息传递、文化解读、意义建 ...
2026-04-09