python入门-函数的参数

  由于学习数据分析,让我接触到了python语言,长期使用java语言,让刚刚入门python的我有点蒙圈,python言语非常的灵活,同时可以大大的降低代码量,又有十分丰富的第三方库。下面是我在学习函数的参数时,总结的一些经验。

  

  关于在python中定义的函数,其参数可以分为:必选参数,默认参数,可变参数,命名关键字参数,和关键字参数参数定义的顺序必须是:必选参数、默认参数、可变参数、命名关键字参数和关键字参数。各种参数用法灵活,以下是各种参数的具体用法:(代码经过实际运行,使用python3.6)
# 带默认参数


def power(x , n= 2):
    result = 1
    for i in range(n):
        result *= x
    return result


print(power( 2 , 3))


# 带多个默认参数

def student(name ,age ,city= "合肥" ,zip= "230009"):
    print( "name:" , name)
    print( "age:" , age)
    print( "city:" , city)
    print( "zip:" , zip)

# print(student("zhouyonghang",23,zip="230004"))

# 默认参数必须是不可变的,否则会出现意外错误,python会记住每次调用的默认参数的引用,当默认参数不可避免为可变参数时:

def add_end(li= None):
    if li is None:
        li = []
    li.append( "END")
    return li


print(add_end())



# 对于可变参数,则向函数传入一个tuple或者list

def cal_add(para):
    result = 0
    for i in para:
        result += i
    print(result)


cal_add([ 1 , 2 , 3])
cal_add(( 2 , 3 , 4))


#对于传入任意个数的参数来说,可以在参数名前面加上*

def cal_add_onestar(*param):
    result = 0
    for i in param:
        result += i
    print(result)


cal_add_onestar( 1 , 2 , 3 , 4 , 5)
cal_add_onestar( 3 , 5)


# 关键字参数,关键字参数允许传入0个或者多个参数,在函数内部,传入的参数会和参数名构成一个dict,如果为other传入一个字典,那么other得到的是字典的副本
def person(name ,age ,**other):
    print( "name:" , name)
    print( "age:" , age)
    print( "other" , other)


person( name= "zhouyonghang" , age= 23 , city= "hefei" , zip= 230009)
person( "zhouyonghang" , 23 , city= "hefei" , zip= 230009)


# 如果需要限制关键字的名称,则需要使用命名关键字,在其他参数后面加上单独的*,*号后面的部分就是提供命名限制的关键字.如果参数列表中已经有了可变参数,那么就不需要加上单独的*号
# 命名关键字作为必要的关键字,必须传入调用的函数中

def person_with_namedpara(name ,age ,* ,job ,city= "hefei"):
    print(name+ "{0} ".format(age))
    print(job)
    print(city)

def person_with_namedpara_(name ,age ,*args ,job ,city):
    print(name + "{0} ".format(age))
    print(args)
    print(job)
    print(city)


atuple=( 1 , 2 , 3 , 3)

person_with_namedpara( "zhouyonghang" , 23 , job= "cs")
person_with_namedpara_( "zhouyonghang" , 23 ,*atuple , job= "programmer" , city= "hefei )

猜你喜欢

转载自blog.csdn.net/hfutzhouyonghang/article/details/78276888
今日推荐