柠檬花开

这是一个成长的空间,有你有我有大家,心灵在这里起飞,美好的一切从这里开始,安宁,舒心,沁人心脾,花香来自心灵深处……

自定义函数(高二2019091)

学习目标:

  • 了解函数的基本含义,掌握自定义函数的语法;

  • 学会定义和使用自定义函数,能够使用自定义函数进行模块化程序设计;

  • 初步体验模块化程序设计的理念,能够将复杂问题进行有条理分析,逐步解决问题。

重点难点:能够使用函数进行程序化程序设计。

       学过Python自带的函数,自己定义新的函数也是可以的。函数定义要指定这个新函数的名字,还需要一系列语句放到这个函数里面,当调用这个函数时,就会运行这些语句。


项目1: 写一个函数,输出如下: 

       

提示:要一次打印超过一行,可以用逗号分隔一下就能换行了。如下所示: 

print('+', '-') 

默认情况下,print会打印到下一行,你可以手动覆盖掉这个行为,在末尾输出一个空格就可 

以了:

print('+', end=' ') 

print('-') 

上面的语句输出结果就是:'+ -'。 

没有参数的print语句会把当前的行结束,去下一行。 

知识参考

一、自定义函数

def print_lyrics():

    print("I'm a lumberjack, and I'm okay.")

    print("I sleep all night and I work all day.")

这里的def就是一个关键词,意思是这是在定义一个函数。函数的名字就是print_lyrics,函数的命名规则和变量命名规则基本差不多,都是字母数字 或者下划线,但是不能用数字打头。

       另外也不能用关键词做函数名,还要注意尽量避免函数名和变量名发生重复。函数名后面的括号是空的,意思是这个函数不需要参数。函数定义的第一行叫做头部,剩下的叫做函数体函数头部的末尾必须有一个冒号,函数体必须是相对函数头部有缩进的,距离行首相对于函数头要有四个空格的距离。函数体可以有任意长度的语句。


      在打印语句中,要打印的字符串需要用双引号括着。单引号和双引号效果一样,除非是字符串中已经出现了单引号,大家一般都是用单引号的。

所有的引号都必须是键盘上直接是引号的那个"键,无论是单引号还是双引号。

如果你在交互模式下面定义函数,解释器会显示三个小点来提醒你定义还没有完成:

>>> def print_lyrics():

...

    print("I'm a lumberjack, and I'm okay.") ...

    print("I sleep all night and I work all day.") ...

在函数定义完毕的结尾,必须输入一行空白行。定义函数会创建一个函数类的对象,有type函数。

>>> print(print_lyrics)

<function print_lyrics at 0xb7e99e9c>

>>> type(print_lyrics)

<class 'function'>

调用新函数的语法和调用内置函数是一样的:

>>> print_lyrics()

I'm a lumberjack, and I'm okay. I sleep all night and I work all day.


一旦你定义了一个函数,就可以在其它函数里面来调用这个函数。比如咱们重复一下刚刚讨论的,写一个叫做重repeat_lyrics的函数。

def repeat_lyrics():

print_lyrics()

然后调用一下这个函数:

>>> repeat_lyrics()

I'm a lumberjack, and I'm okay. I sleep all night and I work all day. 


二、定义并使用

把前面这些小块的代码来整合一下,整体上程序看着大概是这样的:

def print_lyrics():

    print("I'm a lumberjack, and I'm okay.")

    print("I sleep all night and I work all day.")

def repeat_lyrics():

    print_lyrics()

repeat_lyrics()

这个程序包含两个函数的定义:print_lyrics以及repeat_lyrics,函数定义的执行就和其他语句一样,但是效果是创建函数对象。函数定义中的语句直到函数被调用的时候才会运行,函数的定义本身不会有任何输出。

        可以建立一个函数,然后运行一下试试了。

        换种说法就是,在调用之前一定要先把函数定义好。

练习:把这个程序的最后一行放到顶部,这样函数调用就在函数定义之前了。运行一下看看出错的信息是什么。

然后再把函数调用放到底部,把print_lyrics这个函数的定义放到repeat_lyrics这个函数的后面。再看看这次运行会出现什么样子?

三、 运行流程

       为了确保一个函数在首次被调用之前已经定义,必须要知道语句运行的顺序,也就是所谓『运行流程』。

        一个Python程序都是从第一个语句开始运行的。从首至尾,每次运行一个语句。函数的定义并不会改变程序的运行流程,但要注意,函数体内部的语句只有在函数被调用的时候才会运行

        函数调用就像是运行流程有了绕道的行为。没有直接去执行下一个语句,运行流跳入到函数体内,运行里面的语句,然后再回来从离开的地方继续执行。

       只要你记住一个函数可以调用另一个就行。在一个函数的中间,程序有可能必须运行一下其他函数中的语句。所以运行新的函数的时候,程序可能也必须运行其他的函数!


第2课时:

项目

写一个四行四列的小网格绘制的程序。 


参考知识与练习:

四、函数的参数

        函数取得的参数是提供给函数的值,这样函数就可以利用这些值做一些事情。这些参数就像变量一样,只不过它们的值是在我们调用函数的时候定义的,而非在函数本身内赋值。

        参数在函数定义的圆括号对内指定,用逗号分割。当调用函数的时候,我们以同样的方式提供值。注意我们使用过的术语 —— 函数中的参数名称为形参,而提供给函数调用的值称为实参


基本任务:阅读以下程序分析程序的功能及结果,并编辑程序,验证自己分析是否正确。

任务1:


def printMax(a,b):

     if a > b:

        print(a, 'is maximum') 

     elif a == b:

        print(a, 'is equal to',b)

    else:

        print(b, 'is maximum')


printMax(3,4) 

x = 5

y = 7

printMax(x,y)

过程分析

任务2:

x = 50

def func(x):

     print('x is', x)

     x = 2

     print('Changed local x to', x)


func(x)

print('x is still', x)

任务3

可以把一个函数对象作为一个值赋给一个变量或者作为一个实际参数来传递给其他函数。 

比如,do_twice就是一个把其他函数对象当做参数的函数,它的功能是调用对象函数两次: 

def do_twice(f): 

    f() 

    f() 

下面是另一个例子,这里用了do_twice来调用一个名叫print_spam的函数两次。 

def print_spam(): 

    print('spam') 

do_twice(print_spam) 


 锻炼思维:(深度思考)

1.修改一下do_twice这个函数,让它接收两个实际参数,一个是函数对象,一个是值,调用对 象函数两次,并且赋这个值给对象函数作为实际参数。 

def do_twice(func, arg): 

    """Runs a function twice.     func: function object     arg: argument passed to the function     """ 

        func(arg) 

        func(arg)

2.把print_twice这个函数的定义复制到脚本里面。 

def print_twice(arg): 

"""Prints the argument twice.     arg: anything printable     """ 

        print(arg) 

        print(arg)

3.用修改过的这个do_twice来调用print_twice两次,用字符串『spam』传递过去作为实际参数。

do_twice(print_twice, 'spam') 

print('')


4.定义一个新的函数,名字叫做do_four,使用一个函数对象和一个值作为实际参数,调用这个对象函数四次,传递这个值作过去为对象函数的一个形式参数。这个函数体内只要有两个语句就够了,而不是四个。

def do_four(func, arg): 

"""Runs a function four times. func: function object arg: argument passed to the function """ 

    do_twice(func, arg)

    do_twice(func, arg)



拓展资料:https://blog.csdn.net/weixin_44587403/article/details/89764581

评论

© 柠檬花开 | Powered by LOFTER