函数基础

一、定义

  1.函数

    1).函数包括定义函数,调用函数。定义函数使用 ----def 函数名(参数) ------的方式。

    2).定义函数可以增加可读性和复用性。

    3).函数有参数和返回值,函数内容就是函数体。

  2.参数

    1)形参:在函数定义的时候,不知道传入的值是多少,但函数体内部需要使用,于是写入形参。形参的名字和函数体内使用的名字必须一致。

    2)实参:在实际调用函数的时候,传入的参数。实参和形参的命名可以不一致。

  3.返回值

    1)返回值是函数执行完之后返回(return)的结果,如果不接收就令此值回收。

    2)函数如果执行到return语句,函数停止运行。如果是分支中有return,但没有运行到那个分支,不会停止运行。

二、函数分类

  1.从返回值讲

    1)没有返回值

      不写return    只写return  或者return None

def func1():
    print("asdf")
func1()
def func1():
    a=10
    b=20
    print(a+b)
    return

func1()
def func1():
    a=int(input("请输入一个1-10的数:"))
    for i in range(1,10):
        print(i)
        if i == a:
            return None
    return None

print(func1())   #None

    2)返回一个值

      这个值可以是任意类型的值。如果之后会用到,可以在调用函数之后用变量接收返回值。

def func1(a=10,b=20):
    sum=a+b
    return sum

s=func1()   
print(s)

    3)返回多个值

      返回的多个值可以用一个变量以元祖形式接收,也可以用多个变量依次接收。

def func1(a=10,b=20):
    sum=a+b
    return sum,a,b
#用一个变量接收
s=func1()
print(s)
#多个变量依次接收
x,y,z=func1()
print("sum=",x)
print("a=",y)
print("b=",z)
# (30, 10, 20)
# sum= 30
# a= 10
# b= 20

 

  2.从参数讲

    1)没有参数

      函数体内不需要有外部传入的参数

def func1():
    a=10
    b=20
    sum=a+b
    return sum,a,b
#用一个变量接收
s=func1()
print(s)

 

    2)有一个参数

      --- def 函数名(参数)----的方式就可以,参数可以是默认传参,即如果在调用时不传入相应参数,就按照函数定义时的参数设置执行,如果调用时有参数传入,按照传入参数执行。

def func1(a=10):
    b=20
    sum=a+b
    return sum,a,b
#用一个变量接收
s=func1(6)
print(s)
#(26, 6, 20)

 

    3)有多个参数

      --- def 函数名(参数1,参数2,……),也可以默认传参。

      不确定的多个参数可以使用---*args---的方式传入,多层参数也可以使用---**变量名---的方式传入。

def funmx(a,b,*args):
    sum=a+b
    for i in args:
        sum+=i
    print(sum)
    return
funmx(2,3,1,2,3,3,4,5)
#23
def funmx(a,b,*args,c):
    sum=a+b+c
    for i in args:
        sum+=i
    print(sum)
    return
funmx(2,3,1,2,3,3,4,c=5)  #指定参数名传递,否则后面一串会依次被认为是*args中的
#23

 

def funcs(x,*args,**kwargs):    #*args+**kwargs几乎是万能的
    sum=x
    for i in args:
        sum+=i
    for i in kwargs.values():
        sum+=i
    print(sum)

nums=[3,4]
numm={"num1":5,"num2":6}
funcs(1,2,*nums,**numm)
#21

 ----------------------------------------------------一个示例------------------------------------------------------------

def funcx(x):
    if type(x) is list and x:
        for i in x:
            if x== '':
                return True
    elif x and type(x) is list or type(x) is tuple:
        for i in x:
            if not i:
                return False
a=10
b=20
c=a if a>b else b   #三元运算符。和c++里面的? :不一样
print(c)

 

 

posted @ 2019-06-03 20:04  玉石非玉  阅读(124)  评论(0编辑  收藏  举报