python3 函数的使用

 

一、函数定义

语法:

def 函数名(参数列表):

函数体

 

eg1:不传参数

def add(a,b):

    return a+b

add(1,3)

python3 函数的使用

 

eg2:缺省参数

def add(a=1,b=2):

    return a+b

add()

python3 函数的使用

 

eg3:

def func(a,b):

    print (a,b)

func(1,2)

func(b=1,a=2)

python3 函数的使用

 

eg4:

def add(a,b=100):

    return a+b

 

print (add(10))

print(add(10,200))

python3 函数的使用

 

二、参数传递

2.1用函数实现一个除法

 

def div(a,b):

    if not isinstance(a,(int,float)) and not isinstance(b,(int,float)):

        return None

    if b==0:

        return None

    return a/b

 

print (div(100,10))

 

 

 

 

python3 函数的使用

 

2.2 统计一句话中数字的出现次数

s="I am a 19 years old boy!666!"

def count_digit_in_a_sentencee(s):

    if not isinstance(s,str):

        print ("the parameter is not a unicode string")

        return 0

    result=0

    for i in s:

        if i in "0123456789":

            result +=1

    return result

 

print (count_digit_in_a_sentencee(s))

python3 函数的使用

 

2.3 按值传递与按引用传递

2.3.1 按值传递

a="hello world"

def fun(a):

    a+="today"

    return a

 

fun(a)

a

python3 函数的使用

2.3.2 按引用传递

a={1:2,3:4}

def fun(a):

    a[1]="good"

    return a

 

fun(a)

a

python3 函数的使用

 

备注:
按值传递:函数传入参数为不可变的,对外部的变量就没影响。a=100--按值  (传入不是地址)

按引用传递:函数传入参数为可变的,对外部的变量就有影响.    ------按引用传(地址)

python3 函数的使用

 

2.4 全局变量global的使用

a=100

def f():

    global a

    a+=1

    return a

 

a

f()

a

python3 函数的使用

 

2.5 可变参数

2.5.1  *arg的使用

def f(a,b,*arg):

    print (type(arg))

    for i in arg:

        print (i)

f(1,2,3,4)

python3 函数的使用

 

练习:

写一个函数,使用可变参数,计算函数所有参数之和

 

def f(a,*arg):

    result=0

    if not isinstance(a,(int,float)):

        return result

    result=result+a

    for i in arg:

        if isinstance(i,(int,float)):

            result+=i

    return result

 

print (f(1,2,3,"a",5))

python3 函数的使用

 

2.5.2 **kw的使用

def f(a,b,**kw):

    print (type(kw))

    for k,v in kw.items():

        print(k,v)

 

f(1,2,c=3,d=4,e=5)

python3 函数的使用

 

备注:

总结:

*arg:表示把可变的多个参数,换换为了一个元组

**kw:表示把可变的多个命名参数,转换为有一个字典

 

2.5.3 综合练习

练习一:请使用**kw的方式,把可变的所有参数,算一个乘积

def f(a,b,**kw):

    result=1

    result=result *a*b

    for k,v in kw.items():

        if k.isdigit():

            result*=k

        else:

            return result

    return result

       

print (f(1,2,c=3,d=4,e=5))

python3 函数的使用

 

 

练习二:同时使用*arg和**kw,算一下字母的长度之和

题目:同时使用*arg和**kw,算一下字母的长度之和,注意所有参数均使用字符串,字符串都是字母

 

def f(a,b,*arg,**kw):

    result=0

    result=len(a)+len(b)

    for i in arg:

        result +=len(i)  

    for k,v in kw.items():

        if k.isalpha():

            result +=len(k)

        else:

            return result

    return result

       

print (f("he","world","this","is","a",number=3,middle=4,last=5))

python3 函数的使用

 

练习三:猜数字游戏

随机生成一个1-100中间的整数,你再去输入一个数,如果大了,就提示大了,让用户重新输入;如果小了,让用户重新输入;如果用户输入的数等于随机生成的数,那么打印一下你一共猜测的总数是多少,随机数是多少,结束程序。

程序:

import random

random_number=random.randint(1,101)

times=0

while 1:

    user_input_number=int(input("请输入一个数字:"))

    times=times+1

    print (user_input_number)

    print (type(user_input_number))

    if type(user_input_number) != type(random_number):

        print ("你的输入有问题,请检查输入!")

    elif user_input_number < random_number:

        print ("你猜的数字小了,请重新输入!")

    elif user_input_number >random_number:

        print ("你猜的数字大了,请重新输入!")

    else:

        print ("恭喜你!终于猜对了!")

        print ("你所猜的数字是: %d" %random_number)

        print ("你一共猜了 %d 次" % times)

        break

python3 函数的使用

 

练习四、函数的偶数返回

练习:

写一个函数,一个字符串作为参数,函数需要将此字符串的偶数位字母做一个返回

def get_oven_position_letters(s):

    letter_list=[]

   

    for i in range(len(s)):

        if i%2 ==0:

            letter_list.append(s[i])

    return "".join(letter_list)

 

print (get_oven_position_letters("abcedf"))

python3 函数的使用

备注:该程序把“abcedf”中"a"当成第0个,“b”当成第一个来处理的