标签:代码 例子 重要 屏幕 ref 定义数据 指定 term 覆盖
本章包含知识点
1、定义函数;
2、变量和全局变量区别;
3、形参,实参,默认参数;
4、多参传递,荣誉处理;
运行环境 ipython ,交互功能比python清晰,明了。
函数介绍
函数是编程语言当中非常重要的组成部分
会写到 三个部分
?自定义函数、
?函数中定义传递参数、
?变量的作用域
一个脚本当中 一个功能要反复的出现,一般会使用函数。 功能更多 会定义个类。
只会定义数据类型还是不够的。
有的时候 会执行一堆动作,就要用到函数。
从数学函数过渡到Python 函数
?数学函数
?f(x >3*x
提供X值,函数进行3倍运算,并返回对应值
?F (x,y) x*y
可以有多个参数,作为输入
?返回复合对象,作为输出
数学函数 定义方法。
数学函数当中给它一个值,返回一个结果。
涉嫌到 定义 函数 接收参数,在函数当中进行*2倍的运算,然后返还,这种参数可以有多个,作为数据的输入。输入到函数里面去,函数拿到数据后,处理完了,作为输出,这就是一个基本函数运行的过程。
python函数和数学函数 相差不大
?python函数
?执行单独的操作
?采用零个或者多个参数作为输入
?经过处理, 得到返回值(单个或复合对象) 作为输出
python 函数使用第一个案例。
1. 定义一个函数,名字为a3,需要得到一个值为x
2. 返回并且进行运算x*2
调用方法
用名字a3, 传递一个值为10。这个值就传递了给了x,x拿到函数里面去,进行*2,return返回值。
这就是一个输入、操作、返回的过程。
用 python写一个自定义函数
解释器环境为 ipython 内含交互
def是关键字
def知识,在python中 def即使对象,也是函数。
因为def定义了一个模块变量,或者说是类的变量,它本身是一个函数对象,属于对象的函数就是对象的属性,当然,你也可以叫他"方法"。
python 的函数和其他语言的函数有很大区别。它是可以被其他变量覆盖的
叫做函数或者方法都可以。
看你的习惯,因为python里一切皆为对象,所以叫方法总是没错的,同时python也不反对面向过程的编程,于是叫函数也没错.
一般情况,我把类中def的叫作方法,把py脚本中缩进为零的def叫做函数.
参考百度百科回答 python里def:是叫函数还是方法?
函数
? 定义: 函数就是完成特定功能的一个语句组,这组语句可以作为一个单位
使用,并且给它取一个名字。
? 调用: 可以通过函数名在程序的不同地方多次执行(这通常叫做函数调
用),却不需要在所有地方都重复编写这些语句。
?自定义函数
? 用户自己编写的
? 预定义的Python函数
?系统自带的一些函数,可以直接使用。
为什么使用函数
?降低编程的难度
?复杂的大问题分解成一系列更简单的小问题,小问题继续划分成更小的问题,当
问题细化为足够简单时,我们就可以分而治之。这时,我们可以使用函数来处理
特定的问题,各个小问题解决了,大问题也就迎刃而解了。
?代码重用
?我们定义的函数可以在一个程序的多个位置使用,也可以用于多个程序。此外,
我们还可以把函数放到一个模块中供其他程序员使用,同时,我们也可以使用其
他程序员定义的函数。这就避免了重复劳动,提供了工作效率。
定义和调用
def functionN ame (parameter1,parameter2) :
"" "注释” " " 函数是做什么用的
statement1
statement2
rerurn valueToReturn
不 return 就会只是一个空值。
functionName (x,y )
定义名字是有规定的,
如果只有一个单词 全小写,
如果有两个以上后面单词第一个字母要大写。
后面可以有参数,可以没有。
函数返回值改成 print ,没有返回值,返回的会是空值,
函数功能变了,变成打印数据。
调用它的话,就变成打印数据了,
虽然调用的时候,功能上感觉没什么区别,但是,注意交互 返回Out没有了,
我们可以接收到这个返回值 r = a3(10) ,发现r里面是空的没有东西返回。
因为没有 显示语句,不会接受到信息,就不会返回信息。
返回值看需求 ,一般都会留一个返回值。
把概念搞清楚
返回值
变量作用域
实参、形参、默认参数、
多参数及冗余处理
返回值第二个例子,
返回绝对值。
返回值,给调用者,
谁执行了,谁就是调用者;
函数返回值
函数被调用后会返回一个指定的值
函数调用后默认返回None
?return 返回值
?返回值可以是任意类型
? return执行后,函数终止
? 区分返回值和输出
return 执行后,函数终止案例
第一个函数为 打印操作,
指定值为a,返回的结果为 函数内语句全部执行;
第二个函数操作第二个操作为 返回 结果;
指定值为a,返回结果为 start,执行到 return函数就会终止很明显体现。
这种结构下面代码虽然是没有 意义的,但是如果在 if 不同分支下,return出不同结果,还是很有用的。
函数的返回值,是返回给调用者的。输出是虽然也是在屏幕上,但是那个是程序输出的结果。
变量的作用域例子
把概念搞清楚
?变量作用域
?实参、形参、默认参数
?多参数及冗余处理
定义函数
定义函数 和定义变量是不一样的,定义函数过后,函数里面的变量是不能被直接使用的。报错 显示 未定义名称
变量 b = 100
直接生效,返回100
定义变量 会立即生效;
虽然b定义变量 b= 100
定义函数里面 定义b = 20
但是函数并没有被调用,所以变量b = 20不会被执行的。
既然没有被 执行,那下面就执行一下。
执行的时候就相当于 f = 10,看了下 b的返回值,还是100;原因在于,函数在执行的时候,仅在函数当中执行,对于外面的全局变量是不受任何影响的,外面的b是多是,是没有任意关系的。
叫做 变量的作用域
在脚本当中,或者程序当中直接定义的变量都叫做 全局变量,在函数或类当中,这样的变量叫做局部变量,只在函数内部起作用,对外部是没有任何影响的。
变量作用域
如果经过操作之后,想让个值 变成 全局变量或者把外面全局变量的值进行更改,该怎么办?
这个时候就用到 下面所讲的
变量 作用域
强制声明为全局变量
?语法为global
如果你要把一个局部变量,变成全局变量也是可以的。
在函数里面先 声明 b是全局变量
查看之前的全局变量 b 此时为 100
使用 函数 后 变量 b 也为 10.全局变量生效。
把全局变量 b的 标签 指到了 b上面。
这就是全局变量和局部变量。
目前大概了解一下,函数外面的变量 和 函数里面的变量;
参数
本文开头 二倍运算的时候,我们还定义了一个东西,括号里面的数,称之为 参数,这个可以赋值,可以调用。
参数虽然分为 实参、形参、默认参数、在python当中。只需要看到括号里面的数,称之为 参数就行了。如果别人问,还是需要知道什么为实参、形参、默认参数、=。=
参数(变量)
?def fun(形参)
?fun(实参)
?x是默认参数)
?deffun (x=0)
定义函数的时候,括号里面的形参 称之为 形式参数
调用函数 传值时,实际的那个值,就是它的实参
我在定义函数的时候,给某一个值,指定了一个值,就是它的 默认参数
参数 例子
这个叫做 形式 参数,因为你不知道 它的值是什么,只是定义了一个x。说它是个参数。
当调用这个函数的时候,需要传值了,传了一个20,这个20就是 实际参数。但我在运行这个程序的时候,会把这个这个值带入 x,x带入函数当中,里面的操作就是 函数的事情。
还有可能出现一种情况,f2这个值定义了一个 x,它就必须要传递一个参数,如果不传参数,
就不知道f2里面有没有参数。
那么执行的时候就会报错。
可以看到 第一个 函数带入,执行了内容,x = 2 乘2
第二个 不给参数,函数执行了 默认参数。x = 3 乘2
所以这个就叫做 默认参数
如果传递多个参数 也是不行的,
但是 有一种 情况是可以 解救的,不传参数就行了,
不传参数 ,那么就在定义参数的时候,给他一个默认参数。
通过以上案例了解,
什么 是--形式参数--实际参数---默认参数
多参数例子
参数搞清楚了,下面就是多参数,
以上执行的参数 都是只有一个参数
如果 定义复杂一点的,比如说要定义一个 饼干机器,
这就是多个参数了,运用 元祖做的。定义函数的时候可一指定多个参数,那么多个参数当中,还有一些参数,我想给他默认值,那就要设计一下 参数的顺序了。
因为通常来讲,我们传递值的时候,是从左向右给他赋值的,所以你要是给它 默认值的话 就要 从右向左,给他默认值。列入下面第二个例子
多参数例子 二
注意 如果是设置 默认参数,多参数的话,一定是从右向左。
因为将来,你传递 值 5的时候,是从左往右,将来调试的时候,x = 5 ,y什么都没有的话,传进来 草莓的,会给 x ,y是什么都得不到的。
所以注意 默认参数的 设置方式,一定是 从右向左去。
或者全部设置成默认参数,直接使用默认参数。
多参数传递
如果定义好 一个 普通的列表,对函数使用看起来可以调用。
结果为失败, 原因是因为x 参数得到值后进行操作,先第一个赋值给%d,得到一个字符串,而%d要的整数,数字,到这里面就运行不下去了。
如果你想传递一个 列表或者元祖的话,只需要在前面传递一个*号,这样会把里面的列表或元祖进行一个拆分,分别赋值给函数,但是如果参数不统一的话,也是不可以的。
列表传值
传递多个参数进去使用函数时,前面添加*号 函数名 [*x]
字典传值
当然除了列表,还有一直类型这种传值,那就是字典。
和列表不一样的地方 就是 在加一个 *号 就可以了。
函数名{**x}
字典是取决于 字典中的 k,如果k和函数定义的不一样的,那么就不能执行。
这就是 传值。
当你定义,一个可以多参数的函数的时候,你可以传递列表,也可以传递字典。
也会发现 传递的过多,或者过少的话的情况,
看下面的举例,
这个时候就设计到,冗余处理,
冗余处理
当你传递的参数币,定义好的函数多的时候,就该用到 冗余处理,
冗余处理是在函数定义的时候就进修改;
如果只能接受两个值,那么就定义一个参数去接受多余的。
定义参数的信息,前面加 *号。
此为第一种,以类似字典形式存取值;
第二种方式
如果是单个参数,还是可以冗余处理的,
可如果,指定了 key和value,键值对的这种值
元祖接收不了 ,应该是一个字典。
所以在函数里面再次进行修改,在加一个,传递字典是两个*号。接收 也是两个*号。
让冗余 变成字典存储里面。
通过本章,
1知道如何定义一个函数,
函数的工作过程就是,传递给它一个值,它进行处理,在返回给我们。
2定义函数过程
函数的返回值的重要性
3函数里面的变量,和全局变量的区别,如何申明为全局变量
4明白什么是 形参,实参,什么是默认参数。
5知道怎么去处理 多参数的传递,和冗余处理。关于自定义函数的基本内容
2018年1月13号 王宇林
标签:代码 例子 重要 屏幕 ref 定义数据 指定 term 覆盖
原文地址:http://blog.51cto.com/xwxhvip/2060473