如何去定义一个函数以及函数的简单应用

一    数据分类

数值,bool,str,list,tuple,set,dict

可变数据类型:list,set,dict(是否可以增删改查)

                         其它为不可变数据类型

有序数据类型:str,list,tuple

无序数据类型:数值,bool,set

python2中,dict是无序的;python3中,dict是有序的

###   一般情况下,有序数据类型可以索引,切片,重复,连接,但是字典除外,因为d[ key ]

可以for循环的数据类型:str,list,tuple,set,dict

二   如何去定义一个函数

def print(self, *args,sep='',end='\n',file=None):

        pass

如何去定义一个函数以及函数的简单应用

 

def  函数名():

       函数体

定义函数,并不会执行函数体里面的内容

def   fun():

         print('python')

         print('java')

如何去定义一个函数以及函数的简单应用

调用函数的过程,才会执行命令

fun()

如何去定义一个函数以及函数的简单应用

def welcome(name):

       print('hello' + name)

name:定义函数时的变量,叫做形参,形参可以任意起名

welcome(' fentiao ')

fentiao: 真实的数据信息,调用函数时传的参数,称为实参

如何去定义一个函数以及函数的简单应用

 如:编写一个名为collatz()的函数,它有一个名为number的参数;

如果参数是偶数,那么collatz()就打印出number//2;

如果参数是奇数,那么collatz()就打印出3*number+1

如何去定义一个函数以及函数的简单应用

三    函数动态添加删除成员

def fun()

      print(fun.x)

###动态添加

fun.x=3

fun()

如何去定义一个函数以及函数的简单应用

###动态删除

del fun.x

fun()

如何去定义一个函数以及函数的简单应用

第二次删除后,打印不了了,x值已经不存在了

四    参数的分类

1)  位置参数      ###按照位置传参数

如何去定义一个函数以及函数的简单应用

2) 默认参数    ###形参和实参可以不一致

如何去定义一个函数以及函数的简单应用

3)  可变参数   ##需用*args来接收数值

如何去定义一个函数以及函数的简单应用

4)  关键字参数

如何去定义一个函数以及函数的简单应用

5) 参数解包:*变量名,**变量名

对list,set,tuple解包时,只需要在变量前加 *

如何去定义一个函数以及函数的简单应用

如果要对dict进行解包,一个* 表示获取所有的key值,需要两个 **来对其进行解包,方可得到其value值

五   函数返回值

返回值:函数运算的结果,还需要进一步进行操作时,给一个返回值

return 用来返回函数执行结果的,如果没有返回,默认为None

一旦遇到return ,函数执行结束,后面的代码不会执行

如何去定义一个函数以及函数的简单应用

可以看到,a接收到了返回值 4**3=64;而return 后面的打印 hello 并没有执行

Python可以见解返回多个值,如返回一个元组,将来可对元组进行解包

如何去定义一个函数以及函数的简单应用

a用来接收 x**y,而b用来接收 x+y

六  函数补充

1) 参数检测(isinstance)

如何去定义一个函数以及函数的简单应用

如果后面是两个或两个以上的类型,只要满足其中一个就行

也可以指定参数类型:

如:

如何去定义一个函数以及函数的简单应用

如果输入的非指定的参数类型,会返回None,再次还设置了,如果不是,会返回  error

2) cmp(比较大小)

函数在python2 和 python3 中的区别:

python2:

如何去定义一个函数以及函数的简单应用

如果前者比后者小,返回 -1;前者和后者相等,返回0;前者比后者大,返回1

python3:

如何去定义一个函数以及函数的简单应用

会直接报错,已经不存在此函数

3)abs(绝对值)

如何去定义一个函数以及函数的简单应用

这个函数在python 2和3 中是一样的

七  局部变量和全局变量

局部变量:

如何去定义一个函数以及函数的简单应用

可以看到 a=5并没有影响 a=1,它们的id是不同的,局部变量是不会影响定义函数的外的变量的

但是,set,dict时可以加上去的

如何去定义一个函数以及函数的简单应用

全局变量:

global   ##声明a为全局变量

如何去定义一个函数以及函数的简单应用

这样,定义函数里面的a=5,是会影响到函数外面的a=1的

八   函数的简单案例

1) 编写一个函数,输入一串数值,需要返回一个元组

       将其平均值作为元组的第一个数值,将大于平均值的数值组成一个列表作为元组的第二个数值

如何去定义一个函数以及函数的简单应用

2) 编写一个函数,接收字符串参数,需要返回一个元组

      元组的第一个值为大写字母的个数,第二个值为小写字母的个数

如何去定义一个函数以及函数的简单应用

3) 编写一个函数,接收一个列表和一个整形数k,返回一个新的列表

       将列表下标k之前的(不包含k)元素逆转,将其之后的元素也进行逆转

如何去定义一个函数以及函数的简单应用

4)   模拟轮盘抽奖游戏

轮盘分为三部分:一等奖,二等奖,三等奖

轮盘转的时候是随机的:

      如果范围在[ 0, 0.08)之间,为一等奖

      如果范围在[ 0.08, 0.3)之间,为二等奖

      如果范围在[ 0.3, 1]之间,为三等奖

模拟本次活动1000人,模拟游戏时需要准备的礼物个数

如何去定义一个函数以及函数的简单应用

5) 对于一个十进制的正整数,定义f(n)为其各位数字的平方和,如:

       f(13)=1**2 + 3**2 = 10

       f(207) = 2**2 +0**2 + 7**2 = 53

       下面给出三个正整数 k,a,b,你需要计算有多少个正整数 n 满足 a<=n<=b,且 k*f(n)=n

输入:第一行包含3个正整数 k,a,b,k>=1, a<=b;

输出:输出对应的答案

如: 输入: 51   5000  10000

         输出:3

如何去定义一个函数以及函数的简单应用

九  列表生成式

           [   experssion(或者函数)   for  item1  in  序列    if  判断语句

                                                               for  item1  in  序列    if  判断语句

               。。。。。。。

           ]

如:1)

如何去定义一个函数以及函数的简单应用

2)如何将一个3*3矩阵转换成一个一维的数组:

3*3矩阵:[

                       [ 1  ,  2   ,   3]

                       [4   ,  5   ,   6]

                       [ 7  ,  8   ,   9]

                  ]

一维数组: [ 1  , 2  3,   4,  5  ,  6,  7,  8,  9 ]

如何去定义一个函数以及函数的简单应用