python 零散记录(六) callable 函数参数 作用域 递归
callable()函数:
检查对象是否可调用,所谓可调用是指那些具有doc string的东西是可以调用的。
函数的参数变化,可变与不可变对象:
首先,数字 字符串 元组是不可变的,只能替换。
对以前的形参实参的理解适用于这些不可变对象。即形参实参互不影响。
但是对于可变对象如list dict,形参与实参就会互相影响。
如果想拿到一个副本从而不影响原变量,用列表分割:mylist[:]
收集参数:
func(a,*b):
b接受除了第一个给a的余下参数,以元组形式储存
func(a,*b,**c):
a接受完,剩下的给b,如果有x=xx这种形式的关键字参数则给c
作用域(名字空间):
vars():
返回模块中所有“不可见的”字典,也就是所有变量与值的映射关系,以字典形式展示。
类似class中的__dict__ 类名.__dict__
globals():
返回所有全局变量
locals():
返回所有局部变量
在函数中声明或明确指定使用全局变量,要先声明:
globals x
x = 1
递归:
自身调用自身
满足两个条件:
1.当函数直接返回值时有基本实例(最小可能性,也就是有头,有尽头从无穷递归到最小时可以完结)。
2.递归实例,包括一个或多个问题最小部分的递归调用(有递归的条件)
如算阶层:
#普通方法 def putong(n): result = n for i in range(1,n): result *= i return result #递归方法
#条件1:1的阶层是1
#条件2:大于1的n的阶层是n*n-1
def digui(n): if n == 1: return 1 else: return n * digui(n-1)