复习 函数

简介:

1.1 函数定义

函数

(1)函数就是完成特定功能的一个语句组,这组语句可以作为一个单位使用,并且给他取一个名字。

(2)可以通过函数名在程序的不同地方多次执行(即,函数的调用)

(3)预定义函数,可以直接使用

(4)自定义函数,用户自己编写

(5)为社么使用函数:

         ① 降低编程难度

                - 通常将一个复杂的大问题分解成一系列小问题,然后将小问题划分成更小的问题,当问题细化为足够简单时,就可以分而治之,各个小问题解决了,大问题就迎刃而解了。

         ② 代码重用

                - 避免重复劳动,提升效率

定义函数:

函数的定义和调用:

1
2
     - def 函数名([参数列表]):         //  定义
     - 函数名([参数列表])          //  调用


函数名的命名规则:

    函数名可以是以字母,数字,下划线命名的,但是不能以数字开头


    函数名在定义的时候跟变量有点区别

        "变量"都是定义成 小写 的;

        "函数名" 如果是由两个单词组成,第二个单词首字母要大写,也就是说,如果由多个单词组成,除了开头第一个单词首字母不要大写,其余单词首字母都要大写;两个单词之间可以通过下划线连接;

        "类"的命名:每个单词首字母都要大写;

    要养成这样的规范习惯。


定义函数例子:

1
2
def  fun():
     print  "hello world"

函数调用:


1
2
fun()
hello world


举例:

当我执行脚本的时候,提示我从键盘读取输入:

1.png

结果:

2.png


1.2 函数的参数

形参和实参:

- 在定义函数的时候,函数名后面括号中的变量名称叫做“形式参数”,或者称为“形参”

- 在调用函数时,函数名后面括号中的变量名称叫做“实际参数”,或者称为“实参”


形参:

1
2
     def   fun(x, y):
         print  +  y

x , y 是2个形式参数


调用(传参):

1
2
fun( 2 3 )
5


举例:

判断并打印最大的数

3.png

调用

4.png


实际参数:

1
2
import  sys
print  sys.argv[ 1 ]

打印参数

1
2
python  test .py 1 2
1

举例:

判断是否是数字

5.png

结果:

6.png


1.3 函数的默认参数

练习

打印系统所有的PID

    要求从 /proc 读取

    os.listdir()


1
2
import  os 
os.listdir()

os.listdir() 帮助信息

7.png

用法:

1
os.listdir( '/proc' )


脚本:

1
2
3
4
5
6
7
8
9
10
11
12
import  sys
import  os
def  isNum(s):
     for  in  s:
         if  in  '0123456789' :
             pass
         else :
             break
     else :
             print  s
for  in  os.listdir( '/proc' ):
     isNum(i)



默认参数

缺省参数(默认参数)

1
2
def  fun(x, y  =  100 ):
     print  x, y

调用:

1
2
fun( 1 2 )
fun( 1 )


结果自然不同

举例解释:

8.png

调用的时候,实参会代替100

9.png

只有一个参数的时候,y使用默认的值


举例:

11.png

若指定参数,则

22.png

错误举例:

1
2
def  fun(x = 2 , y):
     print  +  y

报错:

33.png

结论:

    默认参数只能在最后的形参上,不能在前面或中间,只能在最后,方向从右到左,比如有3个参数,定义默认参数可以是"最后一个参数" ,或"第二个和最后一个",或"第一和第二和第三个参数"都定义。



默认参数主要看位置

44.png

本节总结:

默认参数就是我们在调用函数的时候,如果没有给函数传值得话,会使用默认参数给函数传值


1.4 函数的变量

局部变量和全局变量

- python中的任何变量都有特定的作用域

- 在函数中定义的变量一般只能在该函数内部使用,这些只能在程序特定部分使用的变量,称之为局部变量;

- 在一个文件顶部定义的变量可以供文件中的任何函数调用,这些可以为整个程序所使用的变量称之为全局变量。


局部变量:

1
2
3
4
def  fun():
     =  100 
     print  x
fun()


全局变量:

1
2
3
4
5
6
=  "global var"
def  fun():
     =  100
     print  x
fun()
print  x



通过关键字声明:

在函数里面,把x声明为全局变量

1
2
3
4
5
6
=  100
def  fun():
     global  x
     + =  1
     print  x
fun()


同理,在函数内部将关键字声明为全局变量,当函数被调用的时候,在外部能打印出函数内部的变量:

1
2
3
4
5
6
7
8
9
=  100
def  fun():
     global  x
     + =  1
     global  y
     =  1
fun()
print  x
print  y


locals 的用法(试一下):

1
2
3
4
5
6
7
8
=  100
def  fun():
     =  1
     =  1
     print  locals ()
     
fun()
print  locals ()

链接:http://blog.csdn.net/scelong/article/details/6977867


1.5 函数的返回值

- 函数被调用后会返回一个指定的值

- 函数调用后默认返回None

- return 返回值

- 返回值可以是任意类型

- return执行后,函数终止

- return与print的区别


函数被调用后会返回一个指定值

777.png

执行脚本:

666.png

None就是函数的返回值


修改脚本:

555.png

执行脚本:

444.png

这个返回值可是任意类型,也可以返回True


1.6 多类型传值和冗余参数

多类型传值

定义函数

1
2
3
4
def  fun(x, y):
     return  +  y
 
print  fun( 3 5 )

将一个元组传入函数

1
2
3
4
=  ( 3 7 )
fun( * t)
 
10   #返回的函数结果


举例:

传入多个参数的三种形式:

121.png

错误的写法:

122.png

所以,元组不能写在前面



另外,还可以指定参数值,如下

133.png

传入的参数名字一定要和函数内形参的名字要一致,下面两种错误的方法:

1234.png

'x'被函数当成了一个字符串变量


4321.png

a,b,c 报类型错误,与函数的形参不一致,函数不知道这三个新导入的参里面是什么

名字一定要和形参一致。



函数传入字典的方法

把字典作为参数传入函数

3223.png

同理,定义的字典里面的 key 也要和函数里面的形参一致

定义的字典里面的key,要加引号,比如 'x':1,否则,不加引号字典会把x定义为变量,定义字典会报错。

1331.png

总结:

可以向函数内部传入元组和字典,可以把元组里面的元素作为参数传给函数,也可以把字典里面的value作为参数传给函数,但是定义字典的时候字典的key一定要和函数的形参一致。


冗余参数

定义函数的时候,函数有3个参数,调用函数的时候,只能给传3个参数,不能传多,也不能传少

有时候,我们要让函数接收多一些的参数,但是传的时候可能只传了少数几个,或者传入更多参数。

def  fun(x, y=1, *args, **kwargs)

解释:

x 叫默认参数(命名参数)

y=1 叫关键字参数

*args 和 **kwargs 叫 可变参数(或者冗余参数)


举例:

定义函数

1222.png

传入一个参数,返回

2221.png

再传入一个参数,返回

000.png

2被认为是冗余参数,并且是以元组的形式往里传。

传入字符串、列表传入进去,都会存入元组里:

9999.png

再传入一个参数 y=2:

image.png

返回的是字典,可以多传入几个:

image.png

多类型传值里面我们定义了元组类型的变量 t,我们把他作为参数传入函数

image.png

同理,字典也可以以参数形式传入函数或者 a=3这种形式:

image.png

1.7 函数的递归调用

递归就是在函数内部调用他自己

通常用递归去调用阶乘

最基本的阶乘:就是循环方式实现阶乘

举例1:

image.png

举例2:

image.png

下面使用递归的方式实现阶乘:

首先,递归的注意事项:

image.png

所谓"默认结果" 就是当参数等于0的时候,返回1


形象一点:

image.png

上图 f(0) 的时候,结果就是1

举例:

image.png

举例:

image.png



本文转自 听丶飞鸟说 51CTO博客,原文链接:http://blog.51cto.com/286577399/2046625

相关文章
|
1月前
|
存储 数据库
复习总结0111
复习总结0111
11 0
|
1月前
|
存储 安全 Java
复习总结01110
复习总结01110
12 0
|
10月前
函数及相关知识点
函数及相关知识点
|
11月前
|
程序员 编译器 C语言
初阶C语言 第二章-------《函数》知识点(自定义函数,库函数,函数递归)+思维导图+基本练习题+超详细+通俗易懂(建议收藏)
初阶C语言 第二章-------《函数》知识点(自定义函数,库函数,函数递归)+思维导图+基本练习题+超详细+通俗易懂(建议收藏)
|
11月前
|
算法 程序员 编译器
【C】带你复习有趣的函数
【C】带你复习有趣的函数
|
12月前
|
存储 编译器 C语言
c语言复习之函数(七)
c语言复习之函数(七)
|
存储 C语言
C语言复习笔记
C语言复习笔记
101 0
|
C语言 C++
C++ primer 复习 第四章 表达式 复习
C++ primer 复习 第四章 表达式 复习
C++ primer 复习 第四章 表达式 复习
|
编译器 C++
C++ Primer 第六章 函数 复习(2)
C++ Primer 第六章 函数 复习
C++ Primer 第六章 函数 复习(2)