day08_python_函数

2018-08-30  本文已影响0人  mmlong_07

函数

没有函数时会有什么问题?

同样的代码需要写多次
一个功能的需求发生改变需要修改的地方太多
什么是函数:函数就是对实现某一功能的代码实现封装

函数的分类:内置函数和自定义函数。

内置函数:系统写好的函数,可以直接使用,例如:print函数,input函数,sum函数
自定义函数:程序员自己去创建的函数,

函数的声明:(不会执行函数体)

a. 固定格式
def 函数名(参数列表):
函数体
b. 说明:
def :python中声明函数的关键字
函数名:标识符,不能是关键字,PEP8(所有字母小写,多个单词用下划线隔开),见名知意
():固定格式,必须写
参数列表:参数1,参数2,参数3.。。,也可以没有参数
参数的作用是从函数的外面,向函数里面传值用的(将数据从函数外面传到里面)
函数体():实现函数功能的代码段。函数体里面可能会包含 return

注意:函数只有调用才会执行

函数调用

a.固定格式:
函数名()

b. 说明:
函数名:你要调用那个函数就写对应的函数名。函数只能先声明才能调用
实参列表:就是用来给形参传值的

函数的调用过程(重要)

a. 回到函数声明的位置
b. 使用实参给形参赋值(传参)
c. 执行函数体
d. 将返回值返回给函数调用者
e. 回到函数调用的地方,接着往后执行

# 写一个函数,打印一个整数的阶乘,N! = 12*3*4.....*N

def jie_chen(n):
    m = 1
    for i in range(1,n+1):
        m *= i
    print(m)
jie_chen(5)

参数:声明函数的时候的参数列表叫形参调用函数的时候,参数列表中的参数叫实参
传参:传参的过程就是使用实参给形参赋值的过程,一定保证每个形参都要有值

实参

位置参数:传参时实参的位置和形参的位置一一对应(第一个实参传给第一个形参,第二个实参传给第二个形参)
关键字参数:函数调用的时候通过'形参名=实参'的形式来传参

def fun1(a,b,c=0):
    print(a,b,c)
#位置参数
fun1(1,2,3)
#关键字参数
fun1(b=1,c=2,a=3)
#关键字和位置参数结合
fun1(1,2,4)

参数的默认值
在声明函数的时候给参数赋默认值。
a.给部分参数赋默认值时,要求有默认值的参数必须放到参数列表的最后
b.调用有默认值的函数时可以不用传参,也可以传参。

def fun2(a=9,b='a',c=True):
    print(a,b,c)

fun2(b='d')

不定个数参数
python通过在形参名前加*,让折耳根形参变为一个元祖,
来让这个形参可以同时接受多个形参。多个包含0个

写一个函数,计算多个数的和

def sum2(*i):
    sum1 = 0
    print(i,type(i))
    for item in list(i[0]):
        sum1 += int(item)
        print(sum1)

l = '13141451'
sum2(l)

def sum3(a,b,*c):
    print(a,b,c)
sum3('班级','分数',23,23,32,52,)

对参数的类型进行说明
python不能直接约束一个变量的类型。但是可以通过说明,来提示用户调用函数的时候,参数的类型

def func4(name:str,age:int,score:list):
    print(name,age)
    score.append(name)
    print('====')
func4('abc',1,[1,2,41,])
return

返回值:函数的返回值就是return关键字后面的表达式的值,就是函数
调用表达式的结果
python中所有的函数都有返回值,默认是None

####写一个函数,打印'hello'
def say_hello():
    print('hello')
#用一个变量保存函数调用的结果
re = say_hello()
print(re)

return关键字(return只能写在函数体)
a.确定返回值
b.结束函数(函数只要遇到return,函数就直接结束)

def fun1(n):
    print(n)
    return 100
 #   print('=====') # 不会执行

re = fun1(10)
print(re)

注意:看一个函数的返回值是多少,不是看函数中有没有return,而是看函数有没有遇到return.
遇到了就返回return后面的结果,否则就返回None

def judge(number):
    if not number%2:
        return True
    else:
        return False
print(judge(7))

什么时候函数需要返回值
只要实现函数功能会产生新的数据,就通过返回值将新的数据返回,而不是打印它
补充:判断一个值是否是指定的类型

isinstance(值,类型)---->返回值是布尔

1.写一个函数,统计列表中浮点数的个数


print(isinstance(10.0,int))
print(isinstance(10.0,str))
print(isinstance(True,int))
def statistic(lst:list):
    n = 0
    for num in lst:
        if isinstance(num,float):
            n += 1
    return n

2.将一个数字列表中所有元素的值都变为原来的二倍


def multiply(lst:list):
    for i in range(len(lst)):
        lst[i] = lst[i]*2
    return lst
def index(n,lst:list):
lst1 = []
for i in range(len(lst)):
if n == lst[i]:
lst1.append(i)
return lst1

3.写一个函数,获取指定元素对应的下标


a = statistic([1,2,3,4.4,2.3])
print(a)
b = multiply([1,2,3,4,5])
print(b)
c = index(2,[1,3,4,2,5,6])
print(c)
上一篇下一篇

猜你喜欢

热点阅读