python基础梳理(十五)模块、dir函数

一、模块 module
什么是模块:
模块是包含一系列变量、函数、类等组成的程序组
模块是一个文件,通常文件以.py结尾
模块的作用:
让一些相关的变量、函数、类等有逻辑的组织在一起,使逻辑结构更加清晰
模块中的变量、函数、类可以提供给其他模块使用
模块的分类:
内置模块(biultins),在解释器的内部就可以直接使用
(即python3,好多都是c语言实现,因为速度快)
标准库模块,安装python时已安装且可直接使用
第三方模块(通常为开源),需要自己安装
用户自己编写的模块(可以做为其他人的第三方模块)

模块的导入: import(相当于c中的#include)
import 语句
语法:
import 模块名1 [ as 模块新名1 ] [, 模块名2 [as 模块新名 ] ] …
as 用来给模块起别名
示例:
import math #导入math模块
import sys , os #导入sys,os模块
作用:
将某模块整体导入当前模块中
用法:
模块名 . 属性名

示例1:

import math
help(math)
执行结果:
Help on built-in module math:

NAME
    math

DESCRIPTION
    This module is always available.  It provides access to the
    mathematical functions defined by the C standard.

FUNCTIONS
    acos(...)
    ......

示例2:如何使用模块中的函数 模块名.函数名

import sys,math

print(math.cos(180))
执行结果:
-0.5984600690578581

示例3:求圆的面积

import math

def cieclearea(r):
    if r <= 0:
        return -1
    else:
        return math.pi * r ** 2

print(cieclearea(-1))
print(cieclearea(10)

执行结果:
-1
314.1592653589793

有的时候我们只需要用到模块中的一个函数或者一个变量,而不需要将整个模块都导入进来
from import 语句
语法:
form 模块名 import 模块属性名1 [as 新属性名1],模块属性名2 [as 属性新名2]…
注:[] 内容可以省略,具体看需求,所谓属性一般指函数名、变量名等
作用:
将某个模块内的一个或多个属性导入到当前模块的作用域
示例:
form math import pi,sqrt
from math import factorial as fac
from math import sin
示例4:

from math import factorial as fac    #将math模块中的阶乘函数引入并且起别名为fac
print(fac(2))

执行结果:
2

示例四:

from math import pi  #只从math模块拿到pi,其余的没有拿进来
print(pi)
print(sqrt(10))           #这里会报错

执行结果:
3.141592653589793
Traceback (most recent call last):
    print(sqrt(10))
NameError: name 'sqrt' is not defined

示例五:如何导入所有的属性(函数、变量)

from import * 语句
语法:
from 模块名 import
*
作用:
将某模块的所有属性导入到当前模块

from math import *   #导入所有属性,之后使用不需要再给属性之前加模块名

print(e)
print(pi)
print(cos(0))

执行结果:
2.718281828459045
3.141592653589793
1.0

二、dir 函数
格式:
dir([对象]) -----》 返回一个字符串列表
说明:
如果没有参数调用,则返回当前作用域内的所有变量的列表

>>> dir()
['__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__']
>>> var = "hello python"
>>> dir()
['__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'var']
如果给定一个对象作为参数,则返回这个对象的所有变量的列表
	
		1.对于模块,返回整个模块的全部属性
		2.对于一个类对象,返回类对象的所有变量,并递归基类对象的所有属性
		3.对于其它对象返回所有变量,类变量和基类变量
>>> import math
>>> dir(math)
['__doc__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'copysign', 'cos', 'cosh', 'degrees', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf', 'isnan', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'nan', 'pi', 'pow', 'radians', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'trunc']
>>> 

新启动一个环境:

>>> import math
>>> dir(math)
['__doc__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'copysign', 'cos', 'cosh', 'degrees', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf', 'isnan', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'nan', 'pi', 'pow', 'radians', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'trunc']
>>> 

猜你喜欢

转载自blog.csdn.net/KingOfMyHeart/article/details/88963474