2024年最全深入理解python函数,一切皆对象_python say函数(1),啃完999页Python面试高频宝典

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

需要这份系统化学习资料的朋友,可以戳这里获取

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

say(‘hello’) # NameError: name ‘say’ is not defined
speak(‘hello’) # hello


`speak` 只是这个函数对象的另一个名字,也就是说你可以删除原来的名字(`say`),仍然可以通过 `speak` 调用这个函数。这就像普通的变量赋值一样。请看下图了解。  
 ![](https://img-blog.csdnimg.cn/img_convert/109a4d4f86458acdf7c234e5eceb86e4.png)


### 函数作为变量,存储到数据结构


正如我们在第一节中了解到的,函数是 Python 中的对象,我们可以将它们存储在数据结构中,就像任何其他对象一样。 要访问存储在其中的函数对象,假设列表的工作方式如下:



def say(text):
print(text)

funcs = [say, str.lower, str.upper]
for func in funcs:
print(func, “执行返回值:”, func(“Hello”))

运行结果:

Hello

<function say at 0x7f9b880c6320> 执行返回值: None

<method ‘lower’ of ‘str’ objects> 执行返回值: hello

<method ‘upper’ of ‘str’ objects> 执行返回值: HELLO


### 函数作为参数传递


第一次听到这个词,你会觉得很奇怪,但是你可以确定,函数也是一个对象,可以作为参数传递给另一个函数。



def sayUpper(text):
print(text.upper())

def sayLower(text):
print(text.lower())

def speak(text, func):
func(text)

speak(‘Hello’, sayUpper) # HELLO
speak(‘Hello’, sayLower) # hello


上面的例子我们定义了两个函数,`sayUpper` 和 `sayLower`,然后调用 `speak` 函数,将他们作为参数传递给 `speak`函数。


### 函数作为返回值


函数可以作为返回值,这个返回值就是一个函数。



def speaker(volume):
def quiet(text):
return text.lower()
def loud(text):
return text.upper()
if volume < 20:
return quiet
else:
return loud

s = speaker(10)
print(s(‘Hello’)) # hello
S = speaker(30)
print(S(‘Hello’)) # HELLO


上面的例子定义了一个函数 `speaker`,它接受一个参数 `volume`,如果 `volume` 小于 20,返回一个函数 `quiet`,否则返回一个函数 `loud`。执行 `speaker` 函数,我们传入 10,它将返回一个函数 `quiet`,执行 `speaker` 函数,我们传入 `30`,它将返回一个函数 `loud`。例子中`s`、`S` 变量都是函数,它们都是 `speaker` 函数的返回值。



> 
> 通过上面函数的性质:可以理解 python 装饰器的本质是一个函数,它接受一个函数作为参数,并返回一个函数。
> 
> 
> 


### 像执行函数一样执行对象


所有函数都是对象,但所有对象都不是函数。 但是,可以将对象设置为可调用的,这允许将它们视为函数(在某些情况下)。 为此,我们可以使用 `__call__` 属性。



**(1)Python所有方向的学习路线(新版)**  

这是我花了几天的时间去把Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

最近我才对这些路线做了一下新的更新,知识体系更全面了。



![在这里插入图片描述](https://img-blog.csdnimg.cn/1f807758e039481fa866130abf71d796.png#pic_center)



**(2)Python学习视频**



包含了Python入门、爬虫、数据分析和web开发的学习视频,总共100多个,虽然没有那么全面,但是对于入门来说是没问题的,学完这些之后,你可以按照我上面的学习路线去网上找其他的知识资源进行进阶。

![在这里插入图片描述](https://img-blog.csdnimg.cn/d66e3ad5592f4cdcb197de0dc0438ec5.png#pic_center)



**(3)100多个练手项目**

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了,只是里面的项目比较多,水平也是参差不齐,大家可以挑自己能做的项目去练练。

![在这里插入图片描述](https://img-blog.csdnimg.cn/f5aeb4050ab547cf90b1a028d1aacb1d.png#pic_center)




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

**[需要这份系统化学习资料的朋友,可以戳这里获取](https://bbs.csdn.net/forums/4304bb5a486d4c3ab8389e65ecb71ac0)**

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值