鱼C论坛

 找回密码
 立即注册
查看: 2416|回复: 5

[技术交流] 函数三部曲其一:函数的概念

[复制链接]
发表于 2021-3-6 09:05:08 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 Ⅲ只小猪 于 2021-3-6 09:05 编辑

我们在使用python的时候,经常需要用到一些命令,而这些命令有些是带有括号的,这就让人百思不得其解:为什么要带括号?为什么要这么麻烦?括号是用来干什么的?关于这些问题的回答,且听我娓娓道来……
就比如我们使用一个最简单的print命令,我们是这样使用的
1.png
发现没有?其实print命令就带有一个括号!其实,你直接输入print(),括号里面不写内容也是可以正确执行的!(注意看print打印的时候换行了,划重点,后面要考)
2.png
我们小甲鱼的课程中学习函数这一个知识时,在定义函数的时候,不也使用了括号吗?如下图:
3.png
而我们在调用函数时,同样书写了括号,就比如:
4.png
此我们可以推断出,print命令其实也是一个函数!!!没错,它不是什么魔法方法,就是一个函数!!!而print()中括号的作用就是用来告诉Python这是一个函数!什么?你不信?那我现在就来模仿一下print()函数!
5.png
虽然只是套了个壳。。。看到“输出的内容”这一形式参数,printf()会把里面的内容打印出来,那么print()括号中的内容应该也是它所接收的实际参数,因此,我们就能更好的理解print()括号里的内容是什么了,没错,是print这个函数所接收的参数!

注意看print打印的时候换行了,划重点,后面要考

接下来该回答之前的问题了,我们已经发现,使用print()函数后,屏幕上会多出一个空行。这是为什么?为此我们使用help函数:
6.png
注意看我用红框框出来的部分,end表示结尾,而我们都知道\n表示换行,那我们是不是可以故作玄虚,修改一下end的内容呢?
1.png
可以看到,第二个print中的内容没有换行,因为我们修改了end的默认值,并且把它改成了一个空字符串,所以没有换行。而end的默认值却是\n,所以第一个print才会换行。那我们就再改进一下我们的printf()函数吧!
7.png
经过我们的修改,我们可以传入换行这一参数,来实现类似于end的效果(虽然也只是套了个壳。。。)

接下来,让我们看看python中的函数为什么叫函数吧:只要你还记得初中时学习过的数学知识,应该可以看懂……
中学生时代,我们也学习过函数这一知识,难道它跟python中的函数有什么联系吗,为什么名字是一样的呢?别说,还真有联系!就拿最简单的一次函数来举个例子吧。
如函数:y = x + 5,假如x = 5, 那么y = 10,那我们试着定义一个类似于y = x + 5的python函数!
8.png
看见没,结果和数学中的y = x + 5一样,对于y = x + 5这个函数,我们可以理解为向python传入x这个值,然后python再执行y = x + 5这个命令,而python中,这个功能也确实是这样实现的!

至此,文章就已经结束了,希望对你有帮助。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-3-6 09:06:50 | 显示全部楼层
果然是想象的有多高级,写出来就有多平平无奇啊(好像押韵了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-3-6 09:38:00 | 显示全部楼层
加油
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-3-6 10:07:17 From FishC Mobile | 显示全部楼层
本帖最后由 Minecraft程序猿 于 2021-3-6 18:08 编辑

我之前实现过这个函数,但flush不知道是干什么的,
import sys
def printf(*values, sep = ' ', end = '\n', file = sys.stdout):
    value = ''
    for each in values:
        value = value[:] + str(each) + sep
    value = value[:] + end
    if file == sys.stdout:
        sys.stdout.write(value)
    elif type(file) == str:
        try:
            with open(file, 'w') as f:
                f.write(value)
        except:
            return -1
    return 0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-3-6 10:46:57 From FishC Mobile | 显示全部楼层
Minecraft程序猿 发表于 2021-3-6 10:07
我之前实现过这个函数,但flush不知道是干什么的,

很明显, 这函数会 SyntaxError
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-3-6 13:46:32 From FishC Mobile | 显示全部楼层
永恒的蓝色梦想 发表于 2021-3-6 10:46
很明显, 这函数会 SyntaxError

我改一下,看一下之前的帖
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-16 08:07

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表