7.python的函数

认识函数

help() 查看内部函数的帮助
import this 查看python之禅

特性:
1.功能性
2.隐藏细节
3.避免编写重复的代码
次要特性:组织代码 -> 面向对象更合理

函数的定义及运行特点:

函数的基本结构

def func(**param):
    pass
  1. 参数列表可以没有
    2.return 用来返回函数返回值
  2. 函数需要调用才会起作用
  3. 函数调用需要在定义之后
    函数的取值根据顺序来决定,主要是位置参数、还有可变参数,命名关键词参数,关键词参数。
python设置最大递归层数
import sys
sys.setrecursionlimit(10000) 

循环实现的fab数列,递归也能实现,而且更简单。
廖雪峰--递归与尾递归--汗诺塔

# 递归函数 -- 别人写的汗诺塔
class Tower(object):
    def __init__(self):
        self.counter = 0

    def hanoi(self, n, org, aux, dst):
        if n == 1:
            self.counter += 1
            print('{0}->{1}'.format(org, dst))
        else:
            self.hanoi(n - 1, org, dst, aux)
            self.hanoi(1, org, aux, dst)
            self.hanoi(n - 1, aux, org, dst)

def homework(*args):
    tower = Tower()
    print('移动步骤如下:')
    tower.hanoi(*args)
    print('总共移动次数为: {0}'.format(tower.counter))

homework(100,'a','b','c')  # 100基本算不出来,10还差不多

如何让函数返回多个结果

def damage(skill1, skill2):
    return skill1*3, skill2*3  # 默认返回值为tuple

print(damage(1, 2))  
#获取返回结果的正确方法
# 序列解包
skill1_damage, skill2_damage = damage(1, 2)
#不推荐通过索引获取,会造成可读性变差

序列解包和链式调用

d = 1, 2, 3 序列
a, b, c = d 类似这种的赋值形式就是序列解包,解包的变量个数要和序列数相等,否则会报错。
a = b = c = [1, 2] 链式调用,会同id。

必须参数与关键字参数

必须参数:位置参数,必须要传入。
形参、实参的概念。
通过关键字参数没必要通过位置参数顺序调用函数。指定参数给哪个形参。
必须参数和关键字参数的区别主要在调用上,定义上没区别。

默认参数

从而使参数不是必须输入的。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 这是16年5月份编辑的一份比较杂乱适合自己观看的学习记录文档,今天18年5月份再次想写文章,发现简书还为我保存起的...
    Jenaral阅读 2,830评论 2 9
  • 函数和对象 1、函数 1.1 函数概述 函数对于任何一门语言来说都是核心的概念。通过函数可以封装任意多条语句,而且...
    道无虚阅读 4,615评论 0 5
  • 雷雁雄6月11日总结:今天出差,开了半天的车,有点累了,各位晚安。
    雷雁雄阅读 158评论 0 0
  • 现象:夜间模式第一次进入activity时,颜色等资源未正常加载为夜间模式资源,第二次进入后正常调查过程:经过了解...
    萧笑啸阅读 325评论 0 0
  • ■晓晨花露 看看整齐的柏油马路 通向新村 感慨万千 以前,一条弯弯曲曲的 泥泞小路 伴我上学 伴我看风景 美好的童...
    钟的呼唤阅读 181评论 0 6