【Python 基础教程】一文理清Python函数的细枝末节,阿里架构师深入讲解Python开发

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Python全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img



既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Python知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024c (备注Python)
img

正文

def print99():

for teg in range(1,10):

temp=1

while temp<=teg:

print(str(temp)+‘‘+str(teg)+’='+str(tegtemp),end=’ ')

temp+=1

print()

if name==“main”:

print99()

三、Python中函数的组成部分及特点

=====================================================================================

1.声明一个函数


一个函数的组成大致是这样的【函数声明】

‘’’

def是对函数进行声明,f为函数名

Python语句块是要求格式化的,所以函数体(这里pass做的占位符)在

函数声明下要进行缩进,并且参数列表括号后面要跟上:(冒号)

‘’’

def f(参数列表):

pass

2.函数特点的剖析


Python中的函数特点:

  • 函数使用比较简单与其他语言一样函数名后加括号调用(不过调用函数之前一定要先进行函数声明)
  • 函数可以有返回值但是不是必须有返回值(无返回值函数执行完毕后结果为None)
  • 函数是一个表达式,可以直接用于计算(加减乘除)
  • Python中的函数可以作为变量直接赋值。
  • Python函数返回一个值,但是经过操作支持多返回值(可以返回一个元组,元组内存多个值)

函数从声明到执行:

  • def是执行语句,Python解释执行def语句会创建一个函数对象,并绑定到函数名变量
  • 调用函数前必须先执行def 语句,也就是函数的声明,创建函数对象
  • 执行的时候使用 函数名(),也就是相应的函数对象实现函数的调用。
  • 使用外部函数的时候先进行包的导入,在导入包的时候会初始化函数对象。

四、函数参数详解

==========================================================================

1.按照参数的定义划分


①形式参数

形式参数顾名思义仅仅是一种形式上的参数,主要用于函数的参数类型声明,在Python中体现的不是很明显,但是在C或C++上能够明显的体现出来。在C++中函数声明的参数列表可以只写函数的类型。然后调用函数的时候传入对应类型的参数。形式参数的作用域仅仅在该函数范围内。

②实际参数

实际参数顾名思义就是实际的参数,换句话说也就是在调用函数的时候实实在在传进去的参数。此时的参数变量类型要与函数形式参数相对应,要有人为赋予的值。

#此时的i就是形式参数、“Tom”就是实际参数

def pType(i):

print(type(i))

pType(“Tom”)

2.按照参数的使用方法划分


根据参数的定义划分可以划分为形参、实参。根据参数的使用方法划分可以划分为位置参数、可变参数、可选参数、命名参数。

①位置参数

位置参数的意思就是根据形式参数的位置,传入相应的实际参数。函数的参数列表是有限个

并且参数没有默认值,调用函数的时候必须在对应位置传入对应参数。

def pType(i):

print(type(i))

②可变参数

前面提到了位置参数,是有限个并且必须在指定位置传入指定参数。

可变参数与其相反,它可以传入任意个数个参数,并且类型无需保持一致。

可变参数的传参方方式有两种一种是变量前加单*,一种是变量前加双*。

加单星的称为元组可变参数,加双星的是字典可变参数。(可变参数一般放在参数列表的末尾)

要切记如果元组可变参数与字典可变参数同时出现在函数参数列表中要将元组可变参数放在前面

[1]元组可变参数

元组可变参数指的是传进来的参数会以元组的形式进行储存。

def pr1(a,b,*c):

print(a)

print(b)

print©

[2]字典可变参数

字典可变参数是传进来的参数会以字典的形式进行储存,最典型的特征就是传参时必须以命名参数形式传参

命名参数接下来会讲,使用这种方式的原因得益于字典可变参数是字典形式,要有键值对。

def pr2(a,b,** c):

print(a)

print(b)

print©

[3]字典元组可变参数

字典可选参数放在参数列表最后,因为元组可选参数根据位置进行选参,如果将其放在字典可选参数后面会

导致命名参数后面的参数无法传入,程序抛出异常。而将命名参数放在最后正好弥补这种缺陷。

def pr3(a,b,*c,**d):

print(a)

print(b)

print©

pr3(1,2,3,age=4,p=2,q=3,w=4,e=3,r=24)

③可选参数

可选参数就是调用函数的时候可以传入该参数,也可以不传入该参数,如果不传人参数的话就使用

该参数在定义函数的时候的默认值。【如果参数列表有可变参数,传参的时候会先给可选参数再给可变参数】

def pr1(a,b=10):

print(a)

print(b)

④命名参数

命名参数使用的时候要将参数名体现出来,也就是说,传参的时候可以跟参数位置无关,但是需要使用参数名传参

一般的情况下命名参数有可无,在有字典可变参数或者经过我们处理的时候,相关的参数必须显式传递。

命名参数的大致形式

def pr1(a,b):

print(a)

print(b)

#这两种调用方式一样。

pr1(10,11)

pr1(b=11,a=10)

强制命名参数

def pr1(*,a,b):

print(a)

print(b)

#这两种调用方式一样。

pr1(10,11) 这种方式报错

pr1(b=11,a=10)

五、递归函数

========================================================================

1.定义


在计算机语言中,如果一个函数调用了自身那么这个函数被称为递归函数。

汉诺塔

def h(n,a,b,c):

if n==1:

print(a,“—>”,c)

else:

h(n-1,a,c,b)

h(1,a,b,c)

h(n-1,b,a,c)

h(4,“A”,“B”,“C”)

2.递归函数需要满足的条件


  • 递归必须有终止条件
  • 必须保证随着递归次数增加相关变量向终止条件收敛
  • 必须清楚递归不能次数太多,递归次数超限将影响计算机内存。

六、函数式编程

=========================================================================

函数式编程是种编程方式,函数式编程语言最重要的是函数可以接受函数当作输入(参数)和输出(返回值)。和指令式编程相比,函数式编程强调函数的计算比指令的执行重要。和过程化编程相比,函数式编程里函数的计算可随时调用。

1.函数对象


作为Python中的函数,是以对象的形式存在的。对象可以用于参数传递,作为返回值

作为变量进行赋值等等。

2.高阶函数


如果一个函数的参数或者返回值中包含另外一个函数,那么该函数被称为高阶函数。

3.Lambda表达式和匿名函数


在Python中有许多内置函数均为高阶函数,例如map、filter。使用他们的时候往往

需要传递一个函数进去,作为处理变量的标准。这种被作为参数的函数被称为回调函数。

一般不会很大,只需要满足一些小功能。所以我们喜欢传递匿名函数进去。

而Lambda表达式的作用就是创建小型的匿名函数,规则如下:

lambda 参数列表:函数体

以下程序运行结果为

在这里插入图片描述

现在能在网上找到很多很多的学习资源,有免费的也有收费的,当我拿到1套比较全的学习资源之前,我并没着急去看第1节,我而是去审视这套资源是否值得学习,有时候也会去问一些学长的意见,如果可以之后,我会对这套学习资源做1个学习计划,我的学习计划主要包括规划图和学习进度表。

分享给大家这份我薅到的免费视频资料,质量还不错,大家可以跟着学习

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024c (备注python)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
学习资源,有免费的也有收费的,当我拿到1套比较全的学习资源之前,我并没着急去看第1节,我而是去审视这套资源是否值得学习,有时候也会去问一些学长的意见,如果可以之后,我会对这套学习资源做1个学习计划,我的学习计划主要包括规划图和学习进度表。

分享给大家这份我薅到的免费视频资料,质量还不错,大家可以跟着学习

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024c (备注python)
[外链图片转存中…(img-Yw5mZYmN-1713425170698)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值