[Python入门学习]-Python中的函数

一.什么是函数

  函数是一个组织好的可以重复利用的用来实现单一或者是相关联功能的一段代码。

  接触过的函数:print、bin、oct、is、str、int

  函数的特点与作用:实现某一功能,隐藏内部实现细节,避免重复代码

 

二.函数参数

1.必须参数

'''
函数定义的格式
'''
#
def my_func():
    pass

#函数的参数
#必须参数
def my_func_with_param(p1, p2):
    print(p1,p2)
my_func_with_param(1, 2)

my_func_with_param(1)

'''
形参:形式参数,只是意义上的参数,在定义的时候不占内存地址
实参:实实在在的参数,是实际占用内存地址的
'''

2.关键字参数

#关键字参数:是在调用的时候制定参数名称,可以不按照顺序传参数
def my_function_with_params(name, age):
    print(name + "来了,他今年:" + str(age) + "岁!")

my_function_with_params("小王", 50)

my_function_with_params(name="赵四", age=58)
my_function_with_params(age=58, name="赵四")

 

三.默认参数

1.默认参数

#默认参数:如果调用者没有传值,那么就用默认值,可以不制定名字
def my_function_with_param(name="狗蛋", age = 50):
    print(name + "来了,他今年:" + str(age) + "岁!")

my_function_with_param()
my_function_with_param("赵四",age=50)
my_function_with_param("赵四",50)

2.参数混合使用

#参数混合使用
#混合使用时,非默认参数必须在默认参数的前边
def my_function_with_param(name, age=50):
    print(name + "来了,他今年:" + str(age) + "岁!")

my_function_with_param(name="狗蛋")
my_function_with_param(name="赵四", age=70)

 

四.函数返回值

1.一个返回值

'''
函数的返回值
'''
def func_with_return():
    print("函数被调用")

p = func_with_return()
print(p)
print(type(p))


def func_with_return(p):
    return p
p = func_with_return(5)
print(p)
print(type(p))

p = func_with_return("哈哈哈")
print(p)
print(type(p))

#重载:函数名称相同,参数不同。但是python没有这个概念

2.多个返回值

#多个返回值
def func_with_return(name, age):
    return name, age

n,a = func_with_return("赵四",30)
print(n,a)

s = func_with_return("赵四",30)
print(s)
print(type(s))

3. 返回一个函数

#返回一个函数
def func_with_return2(x):
    if x==2:
        def inner_func(y):
            return y*y
    if x==3:
        def inner_func(y):
            return y*y*y
    return inner_func

calc = func_with_return2(2)
print(calc(4))

calc = func_with_return2(3)
print(calc(4))

 

五.递归

  递归:在函数中自已调用自已

  重点:要明确递归结束的条件
  优点:写法非常之简洁
  缺点:效率低
  要求:每次递归的时候,规模都要有所缩小
  逻辑:每两次相邻的调用,前一次要为后一次做准备,第一次运算的结果,是下一次运算的条件

'''
阶乘计算:5的阶乘 5*4*3*2*1
'''
def f(x):
    if x==1:
        return 1
    print("计算" + str(x) + "*" + str(x-1))
    return x*f(x-1)

print(f(5))

 

七.特殊函数

'''
__name__
只有在本模块启动时,__name__变量等于__main__
在什么时候使用
1.可以作为这个模块的入口,在其他语言中,叫做main函数
2.也可以作为调试使用,原因是:在其他模块调用本模块时,__name__=="main"判断结果为False,所以就不会执行
'''
def my_print():
    print(__name__)

if __name__ == "__main__":
    my_print()
    print(1)
    print(__name__)

 

八.变量的作用域

1.变量的作用域

'''
变量的作用域
'''
if True:
    name = "赵四"

print(name)

2.变量的作用域链

'''
变量的作用域链
'''
name="爱国"
def func1():
    name="建国"
    def func2():
        name="卫国"
        print(name)
    func2()
    print(name)

func1()
print(name)

  变量是在函数当中是会由内向外找,先找自已函数当中的作用域,如没有找到,会去自已上面一级找,如果还未找到,则会再进一步向上找。

 

九.作用域练习

  函数未执行之前,其实作用域就已经形成了。

#作用域练习
name = "狗子"

def f1():
    print(name)

def f2():
    name = "二丫"
    f1()

f2()

 

学习地址:https://ke.qq.com/webcourse/index.html#cid=320330&term_id=100380209&taid=2576237348578122&vid=b1428kr4e4r

posted on 2019-04-07 11:21  bijian1013  阅读(94)  评论(0)    收藏  举报

导航