iOS开发人员如何学习Python编程23-补充2

语言: CN / TW / HK

这是我参与11月更文挑战的23天,活动详情查看:2021最后一次更文挑战

单例模式

单例模式:是一种常用的软件设计模式。也就是说该类只包含一个实例。

通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。\ 如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。

通常应用在一些资源管理器中,比如日志记录等。

单例模式实现: - 当对象不存在时,创建对象 - 当对象存在时,永远返回当前已经创建对象 ``` class single(object): __isinstance = None

def __new__(cls, *args, **kwargs):
    if cls.__isinstance is None:
        cls.__isinstance = super().__new__(cls)
        return cls.__isinstance
    else:
        return cls.__isinstance

a = single() b = single() print(id(a)) print(id(b)) ```

常用内置模块

sys模块

sys模块:用来python解释器交互。

sys模块常用方法
  • sys.argv[]:从程序外部获取参数的桥梁 
  • sys.argv[0]:程序本身文件路径
  • sys.argv[1]:外部运行时传递的参数
  • sys.verson:用来显示解释器版本信息
  • sys.path: 用来显示模块搜索路径
  • sys.exit():用来退出程序

os模块

os模块是与操作系统相关的模块。

os模块常用方法
  • os.getcwd():用来打印当前工作目录
  • os.chdir(): 变当前工作目录
  • os.makedirs():以递归方式创建多个文件夹
  • os.removedirs():以递归方式删除多个空文件夹
  • os.mkdir():创建单个文件夹
  • os.rmdir():删除单个空文件夹
  • os.path.exists():判断该路径下的文件或文件夹是否存在
  • os.path.join():拼接路径

time模块

time模块是与时间相关的模块。

time模块常用方法
  • time.sleep():延迟执行时间
  • time.time():秒时间戳
  • time.localtime():本地时间
  • time.strftime():传入时间元组,format参数决定输出时间格式
  • datetime也是与时间相关的模块: 
  • datetime.datetime.now():输出当前时间

random模块

random模块:随机模块。

random模块常用方法
  • random.random():用于生成一个指定范围内的随机符点数
  • random.randint():用于生成一个指定范围内的整数
  • random.choice(): 从序列中获取一个随机元素
  • random.shuffle():用于将一个列表中的元素打乱
  • random.sample():从指定序列中随机获取指定长度的片断
  • random.randrange():从指定范围内,按指定基数递增的在集合中获取一个随机数

JSON模块

JSON模块常用方法。

  • json.loads()json转为字典(适用于语句)
  • json.dumps():字典转为json(适用于语句)
  • json.load()json转为字典(适用于文件)
  • json.dump():字典转为json(适用于文件)

递归函数

函数直接或间接调直接或间接调用函数本身,则该函数称为递归函数。

例如,计算阶乘:

  • 阶乘本质:n! = 1 * 2 * 3 * ... * n
  • 用函数func(n)表示, 可以看出: 
  • func(n) = n! = 1 * 2 * 3 * ... * (n-1) * n = (n-1)! * n = func(n-1) * n

所以,func(n)可以表示为n * func(n-1)

``` def get_nums(num): return num * get_nums(num-1)

354321f(0)

res = get_nums(6) print(res) ```

⚠️注意:如果直接使用以上代码,运行结果会发现递归函数自身没有结束条件,所以需要我们自己设置结束条件,终止函数的调用。

``` def get_nums(num): if num > 1: return num * get_nums(num-1) else: return 1

654321f(0)

res = get_nums(6) print(res) ```