新手快速学习python函数

一、函数的理解

首先,我们使用函数的目的,或者说函数的作用是:增加代码的重复使用,减少代码的重复编写。

其次,函数的注释是在函数名的下方一行使用三引号。

了解了这些我们接着往下看。

二、函数的定义与调用

1、函数定义:

声明一个函数,封装一个调用:def  函数名():

2、函数调用:

执行一个函数,使用一个函数:函数名

三、函数的形参与实参

1、形参:

函数声明时,出现在小括号中,多个形参使用逗号分隔开。

形参没有具体值,需要接受实参。

2、实参

函数调用时,出现在小括号中,多个形参使用逗号分隔开。

实参有具体值,传递给形参。

四、函数的返回值

实参将具体值传递给形参,经过函数内部的计算,将结果返回,函数执行结束。

注意:1、如果没有写return,返回为None

            2、函数执行到return,后续代码不在继续执行

            3、return后可以跟多个值,返回的是一个元组

判断一个是否为质数代码为:

# 三、封装函数:可以判断一个数是否是质数
def get_n(n):
    for i in range(2,n):
        if n%i==0:
            return False
    else:
        return True
# print(get_n(9))
# print(get_n(7))
while True:
    n=int(input("请输入一个数:"))
    print(get_n(n))
#  无限循环判断

五、函数的参数类型

1、位置参数

按照位置依次赋值

2、默认参数

拥有默认值,如果赋予新值,则使用新值,否则使用默认值,默认参数后不能存在非默认参数

3、关键字参数

通过形参名给形参赋值

4、可变参数

(1)、可变字典参数

接受任意多个关键字参数,关键字不在形参中,扩展关键字参数:**kwargs

(2)、可变列表参数

可以接受任意多个参数,后方不能再出现位置参数,扩展位置参数:*arges

六、函数的作用域

1、变量的作用域:

声明一个变量,在声明以后的代码区域才可以使用,这就是变量的作用域。

此外,在一个循环外部尽量不要使用循环内部定义的变量。

2、函数的作用域:

函数内部定义的局部变量  作用域就是函数内部。

函数外部不能使用。

3、此外

函数内部可以直接获取函数外部定义的变量

函数内部修改全局变量用global

函数内部修改外部函数的局部变量用nonlcal

a=10  #声明一个变量,作用域在其之后
b=20
c=30
def fun1():
    d=0  #函数内声明一个变量
    print(a)  #直接用函数外的变量
    global b
    b=50  #全局改变变量b为50
    print(a,b)
fun1()
print(a,b,c)  #d是函数内部变量 函数外部不能使用

七、递归函数

所谓递归函数:就是自已调用自己的函数。

需要注意的是:递归函数的效率较低,随着递归深度的增加,需要维护很大的函数调用栈,开销太大。

递归函数实例:

求阶乘和:如5的阶乘和为:5!+4!+3!+2!+1!

def get_mul_sum(n):
    if n==1:
        return 1
    else:
        return get_mul(n) +get_mul_sum(n-1)
def get_mul(n):
    if n==1:
        return 1
    else:
        return n*get_mul(n-1)
print(get_mul_sum(5))

八、匿名函数

匿名函数就是没有名字的函数,关键字为lambdar,且只能编写一行。

附:匿名函数仅供参考,作者自己也不擅长

lambdar a,b:a+b

九、装饰器

装饰器的目的是:不改变函数原有实现,给函数添加新功能。

本质:闭包函数:1、外部函数嵌套内部函数

2、外部函数把内部函数返回

3、内部函数获取外部函数局部变量

实例:求冒泡排序所用时间:

上面是加入的装饰器,下面是它的应用,经过装饰器,我们就可以在不改变原有函数的情况下增加新的功能。

def cost_time(f):
    def calc():
        stat=time.time()
        f()
        end=time.time()
        print(f.__name__,f"花费时间{end-stat}")
    return calc
@cost_time

def fun1():

    l=[i for i in range(1,1000)]
    for i in range(len(l)-1):
        for j in range(i+1,len(l)):
            if l[j] < l[i]:
                temp = l[i]
                l[i] = l[j]
                l[j] = temp
    print(l)
fun1()

第二个函数为冒泡排序,感兴趣的可以关注后续

  • 14
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值