鱼C论坛

 找回密码
 立即注册
查看: 1159|回复: 9

如何理解 函数--语句的封装

[复制链接]
发表于 2018-9-15 09:55:54 | 显示全部楼层 |阅读模式
5鱼币
小甲鱼说    Python函数是语句的封装
问题1:请问Python函数是什么意思,未曾真正理解过,只知道def 开头写的、有个返回值为函数
问题2:在Python中语句指的是什么?

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-9-15 10:03:44 | 显示全部楼层
1函数内部不也是一条条语句拼写出来的么,我们完全可以不用函数,都在外边一行行敲,但是有重复调用的多行语句,用函数就简单多了,还节省资源,
这是模块化面向对象的方法,你理解的也差不多,并不冲突
2每一行代码都是语句
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-9-15 13:02:11 From FishC Mobile | 显示全部楼层
补充,函数当然可以让我们节省敲代码的时间,尤其是大量重复的部分。但那个不是封装。封装是像手机之类的,用户只接触外壳,对内部的操作完全不需要去理解,就有某些特定的功能。之后的类封装等,都是这个概念。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-9-15 13:12:46 | 显示全部楼层
函数可以理解为代码的整理,就是为啥你知道这是张三这是李四,说白了就是把一些具有相关属性的放到一个地方
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-9-15 14:43:09 | 显示全部楼层
本帖最后由 jackz007 于 2018-9-15 16:03 编辑

        Python 的函数可以类比高中学过的同名数学概念,就是你给出不同的变量值就可以得到相应的函数值。

        例如:

        y = sin(x)

        x 是自变量,y 是因变量,因变量的值取决于自变量。当 x = pi  / 6 时,y = 0.5 ;x = pi  / 2 时,y = 1;

        y = sin(x) 中的 sin() 就是一个函数,里面封装了一系列复杂、固定的算法,通过这种方式在输入变量(x)与输出值(y)之间建立了一种确切的数量关系,这就是函数;

        系统封装了现成的函数 sin(),当我们想知道 sin (pi / 6) 时候,可以直接调用函数得到,如果不调用该函数,我们就得想办法,通过自己编程来做这件事。实现这个函数功能也许要编写2000+行代码,而且,如果不把这些代码处理成函数,那就意味着每一次想用这个功能的时候,都得在需要的位置重复编写这 2000+ 行代码,是不是很麻烦?如果把这些代码处理成函数 myfun() 就不同了。当需要使用的时候,可以只使用一条语句 myfun(x) 就可以达到目的。这样看来, Python函数是语句的封装,是不是很有道理?

        至于说 Python 语句,广义的说,Python 程序中每一行文字表述都是;狭义的说,Python 程序中每一行可以被用来执行的文字表述都是。   

   


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-9-15 20:41:23 | 显示全部楼层
问题一 : 函数简单来说,举个例子吧。  
  现在要你写个九九乘法表该怎么写呢,通常,我们写成下面这种:
for i in range(1, 10):
    for j in range(1, i+1):
        print(f'{i}x{j}={i*j}\t',end='')
    print()
  
。  
现在要你打印三次,不使用函数,你要写成下面这样:
for i in range(1, 10):
    for j in range(1, i+1):
        print(f'{i}x{j}={i*j}\t',end='')
    print()


for i in range(1, 10):
    for j in range(1, i+1):
        print(f'{i}x{j}={i*j}\t',end='')
    print()


for i in range(1, 10):
    for j in range(1, i+1):
        print(f'{i}x{j}={i*j}\t',end='')
    print()

在给你一个任务,你要写10遍的话,你要怎么写???  粘贴复制??   
然后一整页都是你的for循环??
现在就需要函数来帮助你来解决这个问题。  
代码如下:
def nicenice(start,endnum):
    for i in range(start, endnum + 1):
        for j in range(start, i+1):
            print(f'{i}x{j}={i*j}\t',end='')
        print()

这个函数怎么用呢?
首先,你只需要下面一句话,就可以调用这个打印乘法表的函数。  
nicenice(1,9)

如果要打印十次只需要用while,或者for循环即可。如下:
def nicenice(start,endnum):
    for i in range(start, endnum + 1):
        for j in range(start, i+1):
            print(f'{i}x{j}={i*j}\t',end='')
        print()


i=1
while i<=10:
    nicenice(1,9)
    i+=1
如果你说打印10遍用个while循环就好了。  
那我现在有个需求,我要第一遍是九九乘法表,第二遍是打印2到9。第三遍是11到11呢??  
复制上面的for循环,然后修改里面的两个数值???   
使用函数后,你只需要像上面的代码一样。  
定义一个函数,然后像下面这样调用它即可。
def nicenice(start,endnum):
    for i in range(start, endnum + 1):
        for j in range(start, i+1):
            print(f'{i}x{j}={i*j}\t',end='')
        print()

nicenice(1,9)
nicenice(2,9)
nicenice(11,11)

问题二:
语句就是像上面我写的代码就是语句。  
函数就是封装一部分代码,使其成为可以让我们重复调用的语句
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-9-15 21:19:26 | 显示全部楼层
讲解的真不错,浅显易懂
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-9-15 21:20:13 | 显示全部楼层
小甲鱼老师能不能讲讲ttk呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-9-16 09:03:07 | 显示全部楼层
这个还是没有太理解,有空时我再来看一看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-9-16 11:40:34 | 显示全部楼层
本帖最后由 秋木叶 于 2018-9-16 11:42 编辑

函数就像一个杂货店,你给钱给要求,他就返还你需要的物品,或者报错。你就不需要自己去制造这些物品了,然后大家都去杂货店买东西,自己不用去详细的制造。语句就像制造物品的过程
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-10-7 04:33

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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