Python基础——函数详解

Python基础——函数详解

python函数是函数的核心部分,为python的类–面向对象打下坚实的基础。

一、python函数的定义

定义函数,也就是创建一个函数,可以理解为创建一个具有某些用途的工具。
定义函数需要用到def关键字实现,具体的语法格式如下:

def 函数名(参数列表):
    //实现特定功能的多行代码
    [return [返回值]] 

其中,用[ ]括起来的部分为可以省略。
语法格式中,各部分参数的含义如下:

  1. 函数名:其实就是一个符合python语法的标识符,但不建议大家使用a、b、c这类简单的标识符作为函数名。我们在编写函数名时最好能体现该函数的功能(如:my_len(),即我们自定义的len()函数)
  2. 参数列表:设置该函数可以接收多少个参数,多个参数之间使用逗号( , )分隔开。
  3. [return [返回值]] :整体作为函数的可选参数,用于设置该函数的返回值。也就是说,一个函数可以有返回值,也可以没有返回值,是否添加返回值根据实际情况而定。
 #定义个空函数,没有实际意义
def pass_01():
	pass
#定义一个数字加法函数
def digit_add(dig1,dig2):
	sum_01 = dig1 +dig2
	return sum_01

二、函数的参数

当我们把函数比作做某件事情的方法时,那么函数的参数就是开启这个方法的钥匙或者是使用该方法的关键点。
调用者只需要知道如何传递正确的参数,以及函数将返回什么样的值就够了,函数内部的复杂逻辑被封装起来,调用者无需了解。

1.位置参数(必选参数)

位置参数就是我们在常见函数时,给定的一个内容可变、个数确定的参数。

	def sum_01(a,b):
		c = a+b
		return c
2.默认参数

默认参数,就是我们给定的参数。在函数运行时,可以直接执行,不需要再次传入。

1)使用默认参数需要注意一下几点:
	1.必选参数在前,默认参数在后,否则Python的解释器会报错
	2.当函数有多个参数时,把变化大的参数放前面,变化小的参数放后面。变化小的参数就可以作为默认参数
	
2)使用默认参数的好处:
	最大的好处就是降低函数的使用难度。

3)注意事项:
	默认参数必须指向不可变参数。
#input
def my_add(a = 1,b = 2):
	my_sum = a +b
	return my_sum
print(my_add())

#output
3
3.可变参数

顾名思义,可变参数就是传入函数的参数是可变的,传入的参数可以是多个、也可以单个、也可以为0。

以数学题为例子,给定一组数字a,b,c……,请计算a2 + b2 + c2 + ……

#以数学题为例子,给定一组数字a,b,c……,请计算a2 + b2 + c2 + ……
def math_01(*numbers):
    sum = 0
    for n in numbers:
        sum = sum + n * n
    return sum
    
print(math_01(1,2))
print(math_01(1,2,3))

#output
5
14

在参数前添加 * 即表示可变参数。

4.关键字参数

可变参数允许你传入0个或任意个参数,这些可变参数在函数调用时自动组装为一个tuple。而关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict。

#input
def student(name,age,**kw):
	print('name:',name,'age:',age,'other:',kw)

student('jason',20)
student('Adam', 45, gender='M', job='Engineer')
extra = {'city': 'Beijing', 'job': 'Engineer'}
student('Jack', 24, city=extra['city'], job=extra['job'])

#output
name: jason age: 20 other: {}
name: Adam age: 45 other: {'gender': 'M', 'job': 'Engineer'}
name: Jack age: 24 other: {'city': 'Beijing', 'job': 'Engineer'}

三、函数的返回值

函数的返回值主要分为四类:无返回值、返回值为0、返回值为参数、返回值为函数。

python中函数的返回值,以return来实现。

	return 语句的作用:结束函数调用、返回值

返回值的类型:

	无论定义的是返回什么类型,return 只能返回单值,但值可以存在多个元素
1、无返回值

当函数体中没有 return 语句时,函数运行结束会隐含返回一个 None 作为返回值,类型是 NoneType,与 return 、return None 等效,都是返回 None。

#input
def add_01(x):
	print(x)
num = add_01(6)
print(num)
print(type(num))

#output
6
None
<class 'NoneType'>
2、返回值为0

返回值为0时,返回的数据类型为int型。

#input
def add_01(x):
	print(x)
	return 0
num = add_01(6)
print(num)
print(type(num))

#output
6
0
<class 'int'>
3、返回值为参数
#input
def add_01(x):
	print(x)
	return x
num = add_01(6)
print(num)
print(type(num))

#output
6
6
<class 'int'>
4、返回值为函数

当返回值为函数时,闭包的前置条件。同时,函数之间相互嵌套,增加代码利用率。

四、变量作用域

1.作用域类型

python变量的作用域主要有:内置作用域、文件作用域、函数嵌套作用域、本地作用域。

作用域由大到小分为:内置作用域>文件作用域>函数嵌套作用域>本地作用域

1、本地作用域:不包含其他函数定义的函数的内部成为本地作用于。函数内通过赋值创建的变量,函数参数都属于本地作用域

2、函数嵌套作用域:包含了其他函数定义的函数的内部成为函数嵌套作用域

3、文件作用域:程序文件(也称模块文件)的内部为文件作用域

4、内置作用域:最顶层,包含了python各种预定义变量和函数的作用域成为内置作用域。

内置作用域和文件作用域有时都被成为全局作用域(变量称为全局变量),函数嵌套作用域优势也成为本地作用域(变量成为本地变量)
这里主要使用和介绍函数的作用域。

2.全局变量和局部变量

全局变量和局部变量最大的区别是:局部变量只能通过函数去访问,全局变量可以直接访问。

1)全局变量

全局表达式,顾名思义,就是作用域函数整体的变量。

定义位置:一般在函数的外部定义
变量有效位置:在多个函数体内均可有效使用
变量的修改方式:当全局变量是不可变的变量时,需要在函数内声明——global 全局变量。如果全局变量是可变的则不需要添加global
	 a.对全局变量进行全局修改:global 变量名,之后再进行赋值即可
	 b.对全局变量进行局部修改:nonlocal 变量名,之后再进行赋值即可。
	 这里需要注意nonlocal,只能由于封装函数里,即两层函数体内,且外层函数有该变量的局部定义
2)局部变量

局部变量,作用域函数部分的变量。

定义位置:一般定义在函数内部
变量有效位置:仅可作用于该函数体内部
变量的修改方式:可以直接再函数体内部赋值更改。
#全局、局部变量、全局变量全局修改global
#input
a = '我是全局变量'

def func_01():
    global a
    b = '我是局部变量'
    print(a,'1')
    print(b,'1')
    b = '我是更改的局部变量'
    a = '我是更改的全局变量'
    print(a,'2')
    print(b,'2')


func_01()
print(a,'3')
#output
我是全局变量 1
我是局部变量 1
我是更改的全局变量 2
我是更改的局部变量 2
我是更改的全局变量 3
#全局变量局部修改:nonlocal
#input
a = '我是全局变量'

def func_01():
    a = '我是修改的全局变量'
    def func_02():
        nonlocal  a
        print(a, '1')
        a = '我是修改的全局变量,nonlocal'
        print(a, '2')
    func_02()

func_01()
print(a, '3')

#output
我是修改的全局变量 1
我是修改的全局变量,nonlocal 2
我是全局变量 3

五、函数调用

调用函数也就是执行函数。如果把创建的函数理解为一个具有某种用途的工具,那么调用函数就相当于使用该工具。

函数调用的基本语法格式如下所示:

[返回值] = 函数名([形参值])

其中,函数名即指的是要调用的函数的名称;形参值指的是当初创建函数时要求传入的各个形参的值。如果该函数有返回值,我们可以通过一个变量来接收该值,当然也可以不接受。

文件之间的调用

import filename
from filename import 函数名  导入某个函数
from filename import 函数名 as filename_函数名 

第三个是导入某个函数,并且命名为filename_函数名

六、lambda表达式

lambda函数又称为匿名函数。具有单行函数的特性,虽然简短,但函数具有的输入输出功能依旧完整。

语法格式:lambda argument_list: expression
argument_list:参数列表,他的结构和正常函数中的参数相同
expression:参数表达式

lambda表达式的用法:

  1. 将lambda函数赋值给一个变量,通过这个变量间接调用该lambda函数。
#定义一个乘法函数给变量,使得该变量具有乘法的功能
#input
multi = lambda x,y:x*y
print(multi(1,2))

#output
2
  1. 将lambda函数赋值给其他函数,从而将其他函数用该lambda函数替换。

     为了把标准库time中的函数sleep的功能屏蔽(Mock),我们可以在程序初始化时调用:time.sleep=lambda x:None。
    
  2. 将lambda函数作为其他函数的返回值,返回给调用者。

#定义一个加法函数,返回值为乘法函数
#input
def add_double(x,y):
	add = x +y
	print(add)
	return lambda x,y:x*y
a = add_double(3,4)
print(a)

#output
7
<function add_double.<locals>.<lambda> at 0x0000000023CC0D30>

  1. 将lambda函数作为参数传递给其他函数。
#input
a = map(lambda x: x ** 2, [1, 2, 3, 4, 5])
print(list(a))
#output
[1, 4, 9, 16, 25]

七、python内置函数

Python内置函数上述的python内置函数中,标红部分为常见函数。基本在每个项目中都能看到他们的身影。

*内置函数部分参考:[菜鸟教程]

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
Python,print函数用于将文本或变量输出到控制台。在Python 3.x版本,print是一个函数,而在Python 2.x版本,print是一个语句。因此,使用print函数的方式在这两个版本略有不同。在Python 3.x,使用print函数时,需要将要打印的内容放在括号。例如,print("Hello World")将会打印出"Hello World"这个字符串。 在使用print函数时,还可以使用格式化字符串来打印变量的值。比如,print("Hello %s" % variable)的%s表示一个占位符,variable是一个包含字符串的变量。这样,print函数会将字符串的占位符替换为变量的值。 总结起来,print函数用于将文本或变量输出到控制台,它可以通过括号将要打印的内容括起来,还可以使用格式化字符串来打印变量的值。在Python 2.x版本,print是一个语句,在Python 3.x版本,print是一个函数。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Python基础(九)——print函数详解,配合参数示例详解](https://blog.csdn.net/qq_42659468/article/details/118650165)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [详解Python Print函数](https://blog.csdn.net/2301_77669908/article/details/130406031)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值