首页 > 编程语言 >Python学习流水账Day5——有关Python中的函数

Python学习流水账Day5——有关Python中的函数

时间:2024-10-15 18:17:42浏览次数:3  
标签:流水账 return 函数 形参 Python Day5 print 实参 定义

文章目录


前言

简单的python复习第五天:

不是用来教学的,上班没劲,主打一个本科毕业没竞赛没技术证一般路过路人,感觉停下学习的日子有焦虑症和死感,遂写点学习日记流水账来维持脑子一般性生命活动(?。

五补:第五天了(一个爬去上班的星期一


Python操作基础内容

一、Python中的函数

函数是一段封装好某种功能的代码块,在需要的地方调用就可以使用被封装的功能。封装好的函数类似于工具箱里的工具,需要使用的时候拿出来用。
比如我拿出锤子来锤东西它才会发挥作用,不用锤子时它就是把锤子,不会变成别的东西或自己工作。
函数也是一样,封装好的代码可以自由命名为"某某某"(但一般根据代码作用来命名以免调用混乱,因此也有一些函数命名的规则),调用它的时候它就会在相应的地方发挥作用,不调用的时候函数内容不会更改,函数也不会自己运行。

1.内置函数

在Python中有内置函数和自定义函数,内置函数有些我们很常用的比如print()、type()、range()等都是Python的内置函数,这些Python中已经封装好的函数,比如输出print()就能按需拿来就用而不必要去考虑“输出”这个方法要怎么做到。

2.定义一个函数

自己在编写程序时,有些在特定场景下需要多次使用的代码没有特定的内置函数去实现,这时候就可以自己定义一个函数来使用。
定义一个命名函数的格式如下:

def SayHello():
	print("早八人!早上好!")

这里SayHello就是自己定义的函数名,在定义函数名也有一些准则:

函数名最好是体现函数功能的词
由字母、下划线、数字组成,且不能以数字开头
不与关键词重名,且不出现除了下划线以外的特殊符号

调用函数

使用刚才定义的函数:

SayHello()

得到结果

早八人!早上好!

通过调用SayHello(),表示在此处运行函数中的代码。

定义好的函数可以多次调用

SayHello()
SayHello()

得到

早八人!早上好!
早八人!早上好!

调用几次函数中的代码就会执行几次

为函数设置参数

在定义函数时,有时也会为了丰富函数功能为函数设置参数。这些传参函数能根据不同的传入数据,输出不同的结果。参数主要有实参形参两种概念。

实参

实参其实就是“具体数据”,是调用函数时要传递给函数形参的参数。

形参

形参是其实是一个定义的变量名,是承载实参的“容器”。
传递过程也和变量赋值类似,从实参传递到形参,也是一个将数据“装进”变量的过程
还是刚才SayHello的函数

def SayHello(people):
	print(f"{people}!早上好!")

SayHello("打工人")
SayHello("早八人")

得到结果就是

打工人!早上好!
早八人!早上好!

这个演示就是在调用时分别将“打工人”、“早八人”传递给了people,最终执行函数内代码后输出了不同的结果。

给函数设置多个形参

多个形参需要被实参传递数据时,有两种传递方式,关键字实参位置实参

def Addition(a,b):
	c = a+b
	print(c)
#关键字实参
Addition(a=2,b=3)
#位置实参
Addition(2,3)

得到

5
5

需要注意的是,关键字实参的前后顺序不重要(b=3,a=2)等价于(a=2,b=3),位置实参的(3,2)不等价于(2,3)。(3,2)它的实际含义变成了a=3,b=2,因此位置实参在传递时要和形参的顺序对应

默认形参

不是所有形参需要接收实参的传递值,有些数值固定的形参也可以在定义时设置好。

def  Circle(r,pi=3.14):
	area = r*r*pi
	print(area)
Circle(2)
Circle(2,3)	

得到

12.56
12

从结果可以看出,形参被赋值后,调用时不传入实参函数正常运行。但是在传入实参后,程序也会优先将传入的实参值代入函数中运行。

还有一个注意事项是定义函数时有值的形参一定要放在没有赋值的形参后面。这样做的理由是:如果把有值形参放在前面,程序传递实参时无法判断先把这个实参用于覆盖默认值还是将实参传递给其他没有值的形参。`

函数的返回值

在上诉的场景中,我都是用print()直接让函数输出了运行的结果。实际运用中,会需要拿运行结果再进行一些操作,以print()做结显然不适合所有场景,这时需要用return来返回结果。
将刚才使用的加法函数改成return

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

re = Addition(2,3)
print(re)

得到结果

5

这个例子中,将c的值返回给了Addition(2,3),可以在函数外部做一些数值传递和操作
如果直接print(c)是没有结果的,因为c是仅仅在函数内使用的变量,在外部找不到名为c的变量。
return不仅仅可以返回变量,还可以返回字符串或表达式。当return返回多个值时,会以元组形式传递到外部。
return在一个函数中只可以使用一次,一旦return函数立即运行结束

def Addition(a,b):
	c = a+b
	return c,a
print(Addition(2,3))

得到结果

(5,2)

函数的变量

在Adiition函数的例子中,提到print(c)报错的情况,函数外部无法直接使用定义在函数内的变量。这里就要提到局部变量全局变量只有定义在函数内部的变量才是局部变量

局部变量

定义在函数内部的变量只能在函数内使用,函数外无法使用。

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

Addition函数里面的c就是局部变量

全局变量

全局变量定义在函数外,函数内外都可以使用。

pi =3.14
def Circle(r):
	area = r*r*pi
	print(area)

Circle函数就可以直接将定义在外部的pi代入式子计算。
局部变量如果和全局变量同名,决定值的是全局变量。
虽然局部变量怎么赋值都不会影响全局变量的值,如无必要局部变量和全局变量要使用不同变量名

3.匿名函数

无需定义函数名的函数被称为匿名函数,它可以将结果直接赋值给变量,用lambda来创建函数

pi = 3
#定义匿名函数的格式 lambda创建函数,r是形参,:是固定格式,冒号后面是进行计算的表达式
Circle1 = lambda r:pi*r*r
print(Circle1(1))

得到

3

前面提到函数定义有print有return做结,匿名函数只能用来定义return式函数

4.递归函数

之前的函数使用都是先定义后使用,实际运用时,函数内部也可以调用自身。
累加就是一种经典的递归思想
一篇递归详解文章:p

def sum(x):
	if x ==1: 
		return
	return x+sum(x-1)

sum(10)

得到10的累加

55

10的累加是10+9+8+7+6+5+4+3+2+1
在这个编程过程中实际上是把10拆成10+sum(9),sum(9)这个式子会拆成9+sum(8),sum(8)会拆成8+sum(7)…最后到sum(1)经判断将x=1反给函数得到我们平时得到的递归式子。


总结

今天回顾了定义函数和定义函数过程中的注意事项,也回顾了匿名函数,以及递归函数的部分知识(之后复习C的时候再啃啃吧,偷懒!)。

标签:流水账,return,函数,形参,Python,Day5,print,实参,定义
From: https://blog.csdn.net/m0_52038203/article/details/142915487

相关文章

  • python实现主动学习【一】modAL example active_regression
    文章目录一、简要介绍二、代码运行2.1前期准备2.1.1关于sklearn.gaussian_process.kernels的小展开1.RBFKernel(RadialBasisFunction)2.WhiteKernel3.组合内核的原理4.在主动学习中的优势5.其他核函数的特点6.如何组合使用不同的核2.1.2关于ActiveLearner......
  • python之使用parametrize实现多用户登录
    parametrize实现多用户登录(●'◡'●)1、在yaml文件中写入多个用户名和密码,注意要使用list形式login:-[usernam,password]-[usernam,password]-[usernam,password]-[usernam,password]-[usernam,password]2、读取yaml文件1data_road=os.path.join......
  • 提升质量:利用Coverage分析Python Web项目的测试覆盖
    提升质量:利用Coverage分析PythonWeb项目的测试覆盖鉴于不同框架的运行机制各有差异,当利用Coverage工具对PythonWeb项目的测试覆盖率进行分析时,必须采取针对性的方法来确保获取精确的测试覆盖率数据。以下是我针对Django框架与Flask框架在使用Coverage方面的详尽总结。Django框......
  • python根据时间字符串获取时间,判断是否非法定节假日时间
    fromdatetimeimportdatetimefromchinese_calendarimportis_workday,is_holiday,is_in_lieu,get_holiday_detail#定义两个时间字符串time_str1="2024-10-1218:41:02"time_str2="2024-10-1217:30:00"#将时间字符串转换为datetime对象time1=datetime.......
  • 详解Python中的Requests会话管理
    在Python的网络编程中,requests库因其简洁的API和强大的功能而广受欢迎。它简化了HTTP请求的过程,使得开发者可以轻松地发送请求并处理响应。然而,requests库的真正强大之处在于其会话管理功能。通过会话管理,我们可以维护一个会话,在这个会话中发送多个请求,这样可以提高性能并......
  • python使用http代理:实用的实践指南
    在Python中使用HTTP代理的实用指南在网络编程中,HTTP代理是一个非常有用的工具,能够帮助我们隐藏真实IP以及提高网络请求的灵活性。Python作为一门强大的编程语言,提供了多种方式来使用HTTP代理。接下来,我们将详细介绍如何在Python中使用HTTP代理,包括基本的设置和实际应用。什么......
  • Python私房菜——筑基篇(已完结)
    1Python私房菜【一】——(前置基础)1.1编码就是把人类语言(文字)通过编码的形式(如a-->1100001)一一映射成计算机认识的语言(0101…),即将人类语言通过某种形式转换成计算机认识的二进制数。这种编码形式是人为定义的,因此就有多种不同的编码方式。1.1.1ASCII码是早期的......
  • Python TypeError: list和list之间不支持减法操作
    在本文中,我们将介绍Python中的TypeError错误,特别是在进行列表相减时出现的TypeError:unsupportedoperandtype(s)for-:‘list’and‘list’错误。我们将深入探讨这个错误的原因,并提供一些解决这个错误的方法。 了解TypeError错误TypeError是Python中常见的错误类型之一......
  • Python 如何美观地格式化字典字符串输出
    在本文中,我们将介绍如何使用Python来美观地格式化字典字符串的输出。字典是Python中重要的数据结构之一,它可以存储键值对,提供了一种方便的方式来组织和访问数据。当我们需要将字典的内容以字符串的形式输出时,往往需要对其进行适当的格式化,以便更好地阅读和理解。使用json.dumps()......
  • Python 嵌套字典全面指南
    目录什么是嵌套字典?创建嵌套字典访问嵌套字典中的元素修改嵌套字典中的元素遍历嵌套字典合并嵌套字典删除嵌套字典中的元素嵌套字典的实际应用场景嵌套字典的性能考虑总结1.什么是嵌套字典?嵌套字典指的是字典中的值部分可以是另一个字典。这种结构允许在字......