Python进阶

模块

  • import module1,module2...,导入模块(.py文件)的所有内容

  • from module import xx,只从模块导入指定部分

  • from module import *,导入一个模块的所有内容,那些由单一下划线(_)开头的名字不在此例。引入的其它来源的命名,很可能覆盖了已有的定义。不建议使用

  • from Package import specific_submodule ,从包中导入模块

__name__属性

一个模块被另一个程序第一次引入时,其主程序将运行。如果我们想在模块被引入时,模块中的某一程序块不执行,我们可以用name属性来使该程序块仅在该模块自身运行时执行。

#!/usr/bin/python3
# Filename: using_name.py

if __name__ == '__main__':
  print('程序自身在运行')
else:
  print('我来自另一模块')

dir() 函数

内置的函数 dir() 可以找到模块内定义的所有名称(函数和变量)。以一个字符串列表的形式返回

函数

定义函数

def sum(p1,p2):
   return p1*p2

调用函数时可使用的正式参数类型

  • 必需参数

    • 必需参数须以正确的顺序和数量传入函数。

  • 关键字参数

    • 函数调用使用关键字参数来确定传入的参数值。使用关键字参数允许函数调用时参数的顺序与声明时不一致

    • def user(name,age):
         print(f'姓名:{name},年龄:{age}')
      user(age=18,name='tom')
  • 默认参数

    • 调用函数时,如果没有传递参数,则会使用默认参数

    • def user(name,age,gender='male'):
         print(f'姓名:{name},年龄:{age},性别:{gender}')
      user('tom',15)
  • 不定长参数

    • 加了一个星号 * 的参数会以元组(tuple)的形式导入,存放所有未命名的变量参数

    • 加了两个星号 ** 的参数会以字典的形式导入

    • 星号 * 作为参数单独出现时,星号 * 后的参数必须用关键字传入

匿名函数lambda

# lambda [arg1 [,arg2,.....argn]]:expression
sum=lambda p1,p2:p1+p2
print(sum(1,2))

文件读写

  • open(filename,mode),打开文件后需要关闭 f.close()

    • filename:文件名

    • mode:r 读,w 写,r+/w+ 读写,a/a+ 读写的追加模式

  • with open(filename,mode) as f,自动关闭文件

面向对象

  • 构造方法 __init__()

def __init__(self):
   self.data = []
  • self,表示类的实例,类似于Java的this,类的方法必须有一个额外的第一个参数名称是 self

  • 继承

class DerivedClassName(BaseClassName):
  • 调用父类方法:super().methodName() 或者 BaseClass().methodName()

  • 私有属性方法:属性、方法名用两个下划线开头__private_attrs、__private_method

  • 变量作用域

    • 在内部作用域修改外部作用域的变量时,用global

    num = 1
    def fun1():
       global num  # 需要使用 global 关键字声明
       print(num)
       num = 123
       print(num)
    fun1()
    print(num)
    • 修改嵌套作用域(enclosing 作用域,外层非全局作用域)中的变量,用nonlocal

    def outer():
       num = 10
       def inner():
           nonlocal num   # nonlocal关键字声明
           num = 100
           print(num)
       inner()
       print(num)
    outer()

标准库

  • 操作系统接口 os

  • 执行脚本的命令行参数 sys.argv

  • 字符串正则 re

  • 数学 math

  • 随机数 random

  • 日期时间 datetime,time

json

dict中的key-value为单引号,json中的节点-值为双引号

json.dumps() 编码

json.loads() 解码

posted @ 2021-05-10 22:28  huiyii  阅读(45)  评论(0编辑  收藏  举报