python D25 包

# 一、 今日主要内容
# 1. 包
# 包就是一个文件夹. py2中包内必须要有一个__init__.py文件, 在python3中可以省略,但是最好都保留.
# __init__.py 当我们导入一个包的时候,默认执行这个包内的__init__.py
# if 条件:
# 语句块
# 一条语句 > 语句块 > 代码块(函数,类) > py文件(模块) > 包
# 2. 相对导入和绝对导入
# 相对导入: 相对于当前模块所在的包. 使用的时候必须在包外面启动
# 绝对导入: 根据包的根目录去导入内容
#
# 全部都依赖于 sys.path
#
# 3. 使用包要注意的东西
#
# 尽量在包的外面启动程序.

# 二、知识带你补充
# 我们现在知道可以使⽤import和from xxx import xxx来导入⼀个模块中的内容. 那有⼀种
# 特殊的写法: from xxx import * 我们说此时是把模块中的所有内容都导入. 注意, 如果模块中
# 没有写出__all__ 则默认所有内容都导入. 如果写了__all__ 此时导入的内容就是在__all__列表
# 中列出来的所有名字

# policy 模块
# import versions # 这种模式下__all__对其无影响 因为是用模块名去访问函数
# versions.attack()
# versions.he()
# print(versions.a)
#
# from versions import *
# attack() # 你很能打咯
# he() # 报错
#
# # versions 模块
# __all__ = ["a", "attack"]
# def attack():
# print("你很能打咯")
# def he():
# print("我很能喝")
#
# a = 1000

# 三、包
# 包是⼀种通过 '.模块名'来组织python模块名称空间的⽅式. 那什么样的东⻄是包呢? 我
# 们创建的每个⽂件夹都可以被称之为包. 但是我们要注意, 在python2中规定. 包内必须存在
# __init__.py⽂件. 创建包的⽬的不是为了运⾏, ⽽是被导入使⽤. 包只是⼀种形式⽽已. 包的本
# 质就是⼀种模块

# 为何要使⽤包? 包的本质就是⼀个⽂件夹, 那么⽂件夹唯⼀的功能就是将⽂件组织起来,
# 随着功能越写越多, 我们⽆法将所有功能都放在⼀个⽂件中, 于是我们使⽤模块去组织功能,
# 随着模块越来越多, 我们就需要⽤⽂件夹将模块⽂件组织起来, 以此来提⾼程序的结构性和可
# 维护性

# ⾸先, 我们先创建⼀些包. ⽤来作为接下来的学习. 包很好创建. 只要是⼀个⽂件夹, 有
# __init__.py就可以.
# import os
# os.makedirs('glance/api')
# os.makedirs('glance/cmd')
# os.makedirs('glance/db')
# l = []
# l.append(open('glance/__init__.py','w'))
# l.append(open('glance/api/__init__.py','w'))
# l.append(open('glance/api/policy.py','w'))
# l.append(open('glance/api/versions.py','w'))
# l.append(open('glance/cmd/__init__.py','w'))
# l.append(open('glance/cmd/manage.py','w'))
# l.append(open('glance/db/__init__.py','w'))
# l.append(open('glance/db/models.py','w'))
# map(lambda f:f.close() ,l)
# 当我们导入一个包的时候,默认执行这个包内的__init__.py

# 接下来, 我们来看⼀下绝对导入和相对导入, 我们的最顶级包glance是写给别⼈⽤的. 然
# 后再glance包内部也会有彼此之间互相导入的需求, 这时候就⼜绝对导入和相对导入两种⽅
# 式了.
# 1. 绝对导入: 以glance作为起始
# 2. 相对导入: ⽤. 或者..作为起始(.:表示本级目录 ..:表示上级目录)
# 例如, 我们在glance/api/version.py中使⽤glance/cmd/manage.py


# 总结:
# 1、当你在包内想调用包下其他目录的内容,在当前路径加入包的路径(如果不加入包路径则不能访问)
# 当前模块为policy
# 需求:实现policy直接访问manage里的内容(在当前文件sys.path路径下加入包的路径)
# sys.path.insert(0, "E:\python骑士计划\python D26 包") # 在此文件中加入包的根目录
# print(sys.path)
# from glance.cmd import manage
# manage.main() # from manage(加入包的跟目录路径则当前文件有访问包中其他文件夹的权限可以直接访问)
#
# 2、通过和包平级的tast1文件去访问policy,在policy中访问manage,间接实现poiicy访问manage
# 绝对路径访问:
# test1:
# from glance import policy
#
# policy:
# from glance.cmd import manage
# manage.main()

# 3、和包同级的模块可以直接访问包里的任何模块里的所有内容


# os模块应用
# BASE_PATH = os.path.dirname(os.path.dirname(__file__))
# print(BASE_PATH) # E:/python骑士计划/python D26 包/glance # 动态定位当前包所在的目录
# # sys.path.insert(0, )
# # from glance.cmd import manage
#
# print(os.path.abspath(__file__)) # 获取文件当前绝对路径(这里的__file__表示当前文件__file__== "policy.py")
# # E:\python骑士计划\python D26 包\glance\api\policy.py
#
# print(os.path.dirname(__file__)) # 获取当前文件的目录
# # 结果:E:/python骑士计划/python D26 包/glance/api
#
# print(os.path.abspath("policy.py"))
#
# print(sys.path)


# BASE_PATH = os.path.dirname(os.path.dirname(os.path.dirname(__file__)))
# sys.path.insert(0, BASE_PATH)
#
# from glance.cmd import manage
# manage.main() # from manage

# 包的注意事项:
# 1. 关于包相关的导入语句也分为import和from xxx import xxx两种, 但⽆论使⽤哪种,
# ⽆论在什么位置, 在导入时都必须遵循⼀个原则: 凡是在导入时带点的. 点左边都必须是⼀
# 个包. 否则报错. 可以带⼀连串的点. 比如a.b.c
# 2. import导入⽂件时. 产⽣名称空间中的名字来源于⽂件, import 包, 产⽣的名称空间
# 中的名字同样来源于⽂件, 即包下的__init__,py, 导入包本质就是在导入该⽂件
# 3. 包A和包B下有同名模块也不会冲突, 如A.a和B.a来⾃两个名称空间

转载于:https://www.cnblogs.com/z520h123/p/9990276.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: \u6211\u53ef\u4ee5\u56de\u7b54\u8fd9\u4e2a\u95ee\u9898\u3002Python\u8ba1\u7b97\u5706\u7684\u9762\u79ef\u53ef\u4ee5\u901a\u8fc7\u4ee5\u4e0b\u7684\u516c\u5f0f\u8fdb\u884c\u8ba1\u7b97: ```python import math r = 5 area = math.pi * r ** 2 print(area) ``` \u4f7f\u7528 `math` \u6a21\u5757\u4e2d\u7684 `pi` \u5c5e\u6027\u6765\u8ba1\u7b97\u5706\u7684\u9762\u79ef\uff0c\u5e76\u5c06\u7ed3\u679c\u6253\u5370\u5230\u63a5\u53e3\u3002 \u5982\u679c\u6709\u5176\u4ed6\u95ee\u9898\uff0c\u8bf7\u4e0d\u8981\u77e5\u4e3a\u51fa\u4e8e\u4ec0\u4e48\u539f\u56e0\u800c\u5931\u8d25\uff0c\u53ef\u4ee5\u5c3d\u5feb\u5199\u4e00\u4e2a\u65b0\u7684\u95ee\u9898\uff0c\u6216\u67e5\u8be2\u5176\u4ed6\u8d44\u6599\u6765\u89e3\u51b3\u95ee\u9898\u3002\u8c22\u8c22\uff01 ### 回答2: Python计算圆的面积可以使用圆的面积公式:面积 = π * 半径的平方。 首先,我们需要导入math模块,以便使用π的近似值。在Python中,可以使用math.pi来表示π。 然后,我们需要输入圆的半径。可以使用input()函数来接收用户的输入。 接下来,我们将半径的值转换为浮点数类型,以便进行计算。 最后,我们将使用上述的面积公式计算圆的面积,并将结果打印出来。 下面是用300字回答的示例代码: ```python import math # 提示用户输入半径 radius = input("请输入圆的半径:") # 将输入的半径转换为浮点数类型 radius = float(radius) # 计算圆的面积 area = math.pi * (radius ** 2) # 打印结果 print("圆的面积为:", area) ``` 这是一个简单的计算圆的面积的Python程序。通过输入半径值,程序将计算出圆的面积,并将结果显示出来。请注意,这里使用math.pi来表示圆周率π,并使用浮点数的乘法和指数运算来计算面积。最后,通过print()函数将结果输出到屏幕上。 ### 回答3: 要计算圆的面积,我们需要知道圆的半径。圆的面积计算公式为πr²,其中r为圆的半径。 首先,我们需要导入Python中的数学库,以便使用π的值。可以使用`import math`语句导入数学库。 然后,我们需要获取用户输入的圆的半径。可以使用`radius = float(input("请输入圆的半径:"))`来获取用户输入的半径,并将其转换为浮点数型。 接下来,我们可以使用公式计算圆的面积。使用`area = math.pi * radius ** 2`来计算圆的面积,其中`math.pi`表示π的值。 最后,我们可以将计算得到的圆的面积输出给用户。使用`print("圆的面积为:", area)`来将圆的面积输出。 完整的Python代码如下所示: ``` import math radius = float(input("请输入圆的半径:")) area = math.pi * radius ** 2 print("圆的面积为:", area) ``` 这样,我们就可以使用Python计算圆的面积了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值