Python 函数

本文详细介绍了Python函数的定义、调用、参数类型、作用域等核心概念,包括默认参数、不定长参数、递归函数、匿名函数等。通过实例解析,帮助读者掌握Python函数的使用技巧。
摘要由CSDN通过智能技术生成

引言

函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。
函数能提高应用的模块性,和代码的重复利用率。
Python 提供了许多内建函数,比如print(),但你也可以自己创建函数,这被叫做用户自定义函数。

一、函数的定义和调用

1. 定义函数

  • 定义函数的规则:
    ① 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 ()
    ② 任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数
    ③ 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明
    ④ 函数内容以冒号:起始,并且缩进
    ⑤ return [表达式]结束函数,选择性地返回一个值给调用方,不带表达式的 return 相当于返回 None。

  • 语法格式如下:

def  函数名(参数列表)" 函数_文档字符串"
	函数体
	return 表达式

示例

def prt():
    print("*")
    print("***")
    print("*****")
    return 1
a=prt()         	#接收返回值
print(a)

#输出结果
*
***
*****
1
  1. 函数的返回值

Python中使用return语句返回结果

def add (a, b):
    c = a + b
    return c

#函数add中包含return语句,这意味着add函数有返回值,其返回值是a和b相加的结果。

3. 调用函数

函数的调用有两种情况:

  • 在函数当前文件调用
  • 在其他文件调用函数
  1. 当前文件调用:
#调用同文件的函数,只需要在函数下方写函数名
def function(a,b):
    print(a+b)
function(1,2)

# 结果
3
  1. 不同文件调用:
#调用不同文件的函数,需要先导入:from文件路径 impo 函数名/*
# 例如:我在 2.py 想要调用 test 包里面的 1.py 的函数
--- 1.py 函数为:
def function(a,b):	#像 a,b 这类不确定的参数一般叫做形参
    print(a+b)
function(1,2)		# 1,2 这种具体的参数叫做实参 

--- 2.py 调用 1 中的 function 函数
from test.1 import function
function

# 结果
3

4. 参数传递

在 python 中,类型属于对象,变量是没有类型的:

a=[1,2,3]
a="Python"

//以上代码中,[1,2,3] 是 List 类型,"Python" 是 String 类型,而变量 a 是没有类型
它仅仅是一个对象的引用(一个指针),可以是指向 List 类型对象,也可以是指向 String 类型对象
  • 如果希望定义的函数可以计算任意两个数的和,我们在定义函数的时候,让函数接收数据,这就是函数的参数
#带参函数
#a和b就是函数的参数,它们可以可以接收调用函数时传入的任意两个数
def add(a,b):       #形式参数、形参
    print(a+b)
add(20,30)          #实际参数、实参
add("qwe","asd")
add(2.3,5.8)

#输出结果
50
qweasd
8.1
def add(a,b):
    print(a+b)
    a+=1
    b+=2
c=12
d=22.8
add(c,d)
add(d,d)
print(c,d)

#输出结果
34.8
45.6
12 22.8

二、参数

调用函数时可使用的正式参数类型有以下几种:

  1. 必需参数
  2. 关键字参数
  3. 默认参数
  4. 不定长参数

1. 默认参数

调用函数时,若默认参数未被传值,则会使用参数的默认值;
若默认参数被传入了值,则会使用传入的新值
带有默认值的参数一定要位于参数列表的末尾,否则程序会报错

参数默认值的使用场景:参数少的时候使用,例如姓名

def add(a,b=3):  #形式参数,形参
    print(a+b)
add(11,30)   #实际参数,实参

#输出结果
41

在这里插入图片描述

2. 不定长参数

如果希望函数被调用时能够传入比定义时更多的参数,可以在定义函数时使用不定长参数

语法格式

def 函数名([formal_args,] *args, **kwargs):
       "函数_文档字符串"
       函数体、
       return 表达式

#加星号(*)的参数args会以元组的形式存放未命名的参数;
#加**的参数kwargs会以字典的形式存放命名的参数,即形如key=value的参数。

示例

#元组的形式
def add(*a):
    sum=0
    for x in a:
        sum+=x
    print(sum)

add(1,2,3,4,5,6,7,8,9)

#输出结果
45
#字典的形式
def add(b,**a):
    for x in a.items():
        print(x)
add(1,a=2,c=3,d=4)

#输出结果
('a', 2)
('c', 3)
('d', 4)

用 **a 这种传参方式必须是 key=value 的形式

3. 必要参数

  • 必需参数须以正确的顺序传入函数,调用时的数量必须和声明时的一样
  • 调用 printme() 函数,你必须传入一个参数,不然会出现语法错误

示例

#可写函数说明
def printme( str ):
   "打印任何传入的字符串"
   print (str)
   return
 
#调用 printme 函数,不加参数会报错
printme()

#输出结果
Traceback (most recent call last):
  File "test.py", line 10, in <module>
    printme()
TypeError: printme() missing 1 req
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值