Python学习篇六

函数

定义:函数是一段具有特定功能,可重复用的语句组。一般函数代表一特定的功能。
作用:降低编程难度,代码复用

def 函数名(参数列表):
	语句
	return

函数定义和调用举例:
注意:
(1)函数定义时可以给形参设置默认值,在调用时,如果传新值那么就会更改形参的值,如果不传值就会使用默认值
(2)实参不按照形参的位置传值时,需要指定形参;不指定时就按形参的默认位置传

#定义一个功能为计算3个数的和(其中有一个形参z设置了默认值)并返回的函数
def sum(x,y,z=1):
	a = x+y+z
	return a

#有2种调用方式
#第1种
#按照位置传值,此时sum中的形参x=2,y=3,z为默认值1
#输出6
sum(2,3)

#第2种
#不按位置,指定形参的值,默认值也传值
#输出8
sum(y=2,x = 3,z = 3)

我们在看帮助文档时会发现,帮助文档中的函数参数通常为*args,**kwargs,args和kwargs只是代表一个名字,这里的 * 并不是指针的意思,而是有时候我们并不确定传进去的参数个数,这时候就需要元组和字典来存储所有的参数。

def func(*args):
    print(args, type(args))
    sum_res = 0
    for item in args:
        sum_res += item

    return sum_res
print(func(2, 3, 4))
#输出
(2, 3, 4) <class 'tuple'>
9

def print_score(**kwargs):
    print(kwargs, type(kwargs))
    for course, score in kwargs.items():
        print(course, score)


print_score(yuwen=89, shuxue=94)
#输出
{'yuwen': 89, 'shuxue': 94} <class 'dict'>
yuwen 89
shuxue 94

通过测试可以看到,*修饰的args是tuple类型的,**修饰的kwargs是dict类型的。可以根据元组和字典的特点进行传参和在函数中调用。当函数中不进行操作时,args是一个空元组名,kwargs是一个空字典名

函数递归

概念:在函数内部,采用分支语句对输入参数进行判断。

def fact(n):
    if n==0: #基例
        return 1
    else:
        return n*fact(n-1) #链条 递归的参数比原函数的参数规模是减小的

在这里插入图片描述上图表示斐波那契数列的整个运行过程,蓝色键头是一步步递归下去,直到出口,再把获得的值一步步传回去(红色箭头)。
递归时需要注意递归的深度,如果深度超出默认值,会导致栈溢出,程序的递归深度很大时,可以通过sys.setrecursionlimit来设置最大大小

import sys
#递归深度超出默认值,会导致栈溢出
import sys
print(sys.getrecursionlimit())#获取默认的递归深度
sys.setrecursionlimit(1500)#重新设置递归深度
print(sys.getrecursionlimit())

print(fact(1000))

全局变量和局部变量

一般来说,函数内定义的变量是局部变量,函数外定义的变量是全局变量。
(1)局部变量和全局变量同名时,函数内部会优先使用局部变量,如需使用全局变量,需要使用global保留字声明此处使用的变量是全局变量

a = 5
def sub(num1,num2):
    global a
    return a + num1 + num2
print(sub(3,4))

//输出
12

(2)全局变量中有一个组合数据类型,局部变量为组合数据类型且未创建,那么它等同于直接操作全局变量

ls = []
def list_test():
    ls.append(1)
    print(ls)
list_test()

//输出
[1]

总结,学习了函数的定义和使用,递归函数写法,局部变量和全局变量的特点。截止到现在,Python的基本语法学习结束,下一篇将运用所学的知识来完成词频统计项目。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值