函数是啥?

函数能提高应用的模块性,和代码的重复利用率

函数特点?

1 代码块以 def 关键词开头,后接函数名和圆括号()

2 任何传入参数和自变量必须放在圆括号中间

3 函数以冒号开始,并且缩进

4 若有返回值,return[expression]结束函数,不带 return 表达式相当于返回 none

#coding=utf-8
""" some basic functions """
def func1():
    print("func1")  # 函数定义
func1()             # 函数调用

def func2():
    return(func2)
func1()

def func3(x,y):
    return(x+y)
print(func3(3,4))   #字符串 print("hi") 字符 print(4)

print (4)

函数各种参数?

python 变量区别于其他编程语言的申明&赋值方式,采用创建&指向类似于指针的方式实现的。即:python 的变量实际是对值或者对象的一个指针。

1 默认参数值

参数默认值:函数定义阶段就被确定,(好处)默认参数一旦创建,对象内部的数据就不能修改,就减少了由于修改数据导致的错误,so 不能能设置成不变对象,就设置成不变对象。

#coding=utf-8
def eroll(name,gender,age=6,city='Beijing'):
    print 'name:',name
    print 'gender:',gender
    print 'age:',age
    print 'city:',city
eroll('Liyao','F')

2 可变参数

传入的参数个数是可变的,从 0 个到任意个,在参数前面加 * ,就可以指定任意个参数了

#coding=utf-8
def calc(*numbers):
    sum = 0
    for n in numbers:
        sum = sum+n*n
    print (sum)
calc(1,2) # 在前面加星号(*),参数 numbers 接收到的就是一个元组,*number 可以定义元组,可以传入任意个参数
calc()

3 关键词参数 

可变参数允许传入 0 个或任意个参数,这些可变参数在函数调用时自动组装成一个 tuple,而关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个 dict

#coding=utf-8
def person(name,age,**kw):
    print 'name:',name,'age:',age,'other:',kw
person('Lisa',28,city='Beijing') #**kw 只指定一个参数
person('Lisa',26,city='Shenzhen',sex='F') #**kw 指定多个参数

4 参数组合

四种参数可以混合使用,但是参数定义顺序必须是:必选参数、默认参数、可变参数和关键词参数

#coding=utf-8
def func(a,b,c=0,*args,**kw):
    print "a=",a,"b=",b,"c=",c,"args=",args,"kw=",kw
func(1,2)
func(1,2,c=3)
func(1,2,3,'a','b')
func(1,2,3,'a','b',x=99) 

总结

*args 是可变参数,接收元组(tuple)

**kw 关键词参数,kw 接收字典(dict)

参考:https://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/001374738449338c8a122a7f2e047899fc162f4a7205ea3000