设python中有模块m、如果希望同时导入m中的所有成员_python-模块

先做几个练习题

练习计算一个四乘四矩阵的所有元素的和,以及对角线之和

#encoding=utf-8

a=[[1,2,3,4],

[2,5,2,3],

[1,5,3,2],

[5,3,2,5]

]

#encoding=utf-8

a=[[1,2,3,4],

[2,5,2,3],

[1,5,3,2],

[5,3,2,5]

]

total_sum=0

diagonal_sum=0

‘‘‘

for i in a:

print "i:",i

for j in range(len(i)):

print i[j],

total_sum+=i[j]

print total_sum

‘‘‘

#正对角线之和

for i in range(len(a)):

diagonal_sum+=a[i][i]

print diagonal_sum

c:\Python27\Scripts>python task_test.py

14

#反对角线之和

for i in range(len(a)):

diagonal_sum+=a[i][len(a)-i-1]

print diagonal_sum

.c:\Python27\Scripts>python task_test.py

16

第二题:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。

#encoding=utf-8

a=[]

while True:

try:

content=raw_input("input the interger number:")

if content.strip()==‘over‘:

break

else:

a.append(int(content))

except:

print "input error, input again!"

print a

max_num=max(a)

min_num=min(a)

a[a.index(max_num)] = a[0]

a[0]=max_num

a[a.index(min_num)] = a[-1]

a[-1]=min_num

print a

第三题:有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数

#encoding=utf-8

a=[1,2,3,4,5,6,7,8,9,0]

m=3

print "a:",a

print "m",m

a_first=a[-m:]

a_second=a[:-m]

print a_first

print a_second

print "a:",a_first+a_second

c:\Python27\Scripts>python task_test.py

a: [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]

m 3

[8, 9, 0]

[1, 2, 3, 4, 5, 6, 7]

a: [8, 9, 0, 1, 2, 3, 4, 5, 6, 7]

找到模块或包的三种方法:

把包或模块放到与当前文件同一个目录下

#encoding=utf-8

import a

print a.add(1,3)

c:\Python27\Scripts>python task_test.py

4

把包或模块的路劲放到path里

#encoding=utf-8

import sys

print "sys.path:",sys.path

sys.path.append("d:\\")

print "sys.path:",sys.path

import a

c:\Python27\Scripts>python task_test.py

sys.path: [‘c:\\Python27\\Scripts‘, ‘C:\\Windows\\SYSTEM32\\python27.zip‘, ‘C:\\Python27\\DLLs‘, ‘C:\\Python27\\lib‘, ‘C:\\Python27\\lib\\plat-win‘, ‘C:\\Python27\\lib\\lib-tk‘, ‘C:\\Python27‘, ‘C:\\Python27\\lib\\site-packages‘]

sys.path: [‘c:\\Python27\\Scripts‘, ‘C:\\Windows\\SYSTEM32\\python27.zip‘, ‘C:\\Python27\\DLLs‘, ‘C:\\Python27\\lib‘, ‘C:\\Python27\\lib\\plat-win‘, ‘C:\\Python27\\lib\\lib-tk‘, ‘C:\\Python27‘, ‘C:\\Python27\\lib\\site-packages‘, ‘d:\\‘]

4

把sys加入path部分注释掉:

c:\Python27\Scripts>python task_test.py

Traceback (most recent call last):

File "task_test.py", line 8, in

import a

ImportError: No module named a

把模块放到lib下的C:\Python27\Lib\site-packages

#encoding=utf-8

import a

print a.add(1,3)

c:\Python27\Scripts>python task_test.py

4

当导入一个模块时,Python解析器会去搜索该模块存在的位置,其搜索顺序为:

?当前目录

?如果不在当前目录,Python 则搜索在 shell 变量 PYTHONPATH 下的每个目录。

?如果都找不到,python会查安装路径lib下的site-packages。Unix下,默认路径一般是/usr/local/python/。 模块搜索路径存储在system模块的sys.path变量中。变量里包含当前目录,PYTHONPATH由安装过程决定的默认目录。

包:文件夹下有一个__init__.py的文件,

模块:就是一个python文件

From import把包里的命名空间引入到当前的命名空间,缺点该命名空间里的同名函数会被本地的同名函数覆盖

Globals(), locals()

根据调用地方的不同,globals()和locals()函数可被用来返回全局和局部命名空间里的名字。

如果在函数内部调用locals(),返回的是所有能在该函数里访问的命名。

如果在函数内部调用globals(),返回的是所有在该函数里能访问的全局名字。

两个函数的返回类型都是字典。所以名字们能用keys()函数摘取。

#encoding=utf-8

xiaxiaoxu="xiaxiaoxu"

def func():

print "calling func()..."

aStr="bar"

anInt=23

print "func()‘s globals:",globals().keys()

print "func()‘s locals:",locals().keys()

print "__main__‘s globals:",globals().keys()

print "__main__‘s locals:",locals().keys()

func()

c:\Python27\Scripts>python task_test.py

__main__‘s globals: [‘__builtins__‘, ‘__file__‘, ‘__package__‘, ‘func‘, ‘__name__‘, ‘xiaxiaoxu‘, ‘__doc__‘]

__main__‘s locals: [‘__builtins__‘, ‘__file__‘, ‘__package__‘, ‘func‘, ‘__name__‘, ‘xiaxiaoxu‘, ‘__doc__‘]

calling func()...

func()‘s globals: [‘__builtins__‘, ‘__file__‘, ‘__package__‘, ‘func‘, ‘__name__‘, ‘xiaxiaoxu‘, ‘__doc__‘]

func()‘s locals: [‘aStr‘, ‘anInt‘]

包的概念

在创建许许多多模块后,我们可能希望将某些功能相近的文件组织在同一文件夹下,这里就需要运用包的概念了。包是一个分层的文件目录结构,它定义了一个由模块及子包和子包下的子包等组成的Python的应用环境。

包对应于文件夹,使用包的方式跟模块也类似,唯一需要注意的是,当文件夹被当作包使用时,文件夹中需要包含__init__.py文件,主要是为了避免将文件夹名当作普通的字符串。__init__.py的内容可以为空,一般用来进行包的某些初始化工作或者设置__all__值,__all__是在from package-name import *这语句使用的,表示全部导出定义过的模块。如果希望调用同一个package中的module,则直接import即可

创建包,在同一目录下

#encoding=utf-8

import xia.cal

print xia.cal.add(2,3)

c:\Python27\Scripts>python task_test.py

5

__init__.py中的__all__限制了这句话from xx import *的使用范围

__all__ = [‘bar‘, ‘baz‘]在一个模块中,用这个限制调用的范围

使用文件:

a1.py:

#encoding=utf-8

__all__ = [‘bar‘, ‘baz‘]

waz = 5

bar = 10

def baz(): return ‘baz‘

task_test.py:

#encoding=utf-8

from a1 import *

print bar

print baz

print waz

运行task_test.py:

c:\Python27\Scripts>python

task_test.py

10

baz at 0x0000000002EE5AC8>

Traceback

(most recent call last):

File "task_test.py", line 8, in

print waz

NameError:

name ‘waz‘ is not defined

a1.py中改为:

#encoding=utf-8

__all__

= [‘bar‘, ‘baz‘,‘waz‘]

#encoding=utf-8

__all__=[‘bar‘,‘baz‘,‘waz‘]

waz=5

bar=10

def baz():

return ‘baz‘

c:\Python27\Scripts>python

task_test.py

10

baz at 0x0000000002C85AC8>

5

使用包,建立一个testmodule的目录,目录中有3个文件:a.py、x.py、__init__.py

a.py:

waz = 5

bar = 10

def baz(): return ‘baz‘

x.py:

name=‘gloryroad‘

def sub(a,b):

return a-b

__init__:

__all__ = [‘x‘]

b.py:

from testmodule import *

print a.bar

print a.baz

print a.waz

c:\Python27\Scripts>python

b.py

Traceback

(most recent call last):

File "b.py", line 3, in

print a.bar

NameError:

name ‘a‘ is not defined

x.py改为:

__init__:

__all__ = [‘a]‘]

c:\Python27\Scripts>python

b.py

10

baz at 0x0000000002FFDAC8>

5

包方法1:有一个gloryroad目录,有个子目录submodule,两个目录中有如下几个文件: gloryroad a.py含有函数add(a,b)(当然可以包含多个函数或属性) gloryroad /submodule/b.py含有函数multiple (a,b)

现在在gloryroad目录下创建文件__init__.py ,里面不写任何内容

现在在gloryroad目录的submodule下创建文件__init__.py ,里面不写任何内容

经过如上处理后,在gloryroad目录的同级目录下,生成task_test.py。

#encoding=utf-8

import gloryroad.a

import gloryroad.submodule.b

print gloryroad.a.add(10,30)

print gloryroad.submodule.b.multiple(10,5)

c:\Python27\Scripts>python

task_test.py

40

50

1c08139835b00c1900a888113ec18642.png

0d426db58abd846c03866a44ea67051c.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/440826.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【牛客 - 370F】Rinne Loves Edges(树,统计dp)

题干: Rinne 最近了解了如何快速维护可支持插入边删除边的图,并且高效的回答一下奇妙的询问。 她现在拿到了一个 n 个节点 m 条边的无向连通图,每条边有一个边权 wiwi 现在她想玩一个游戏:选取一个 “重要点” S,然…

java 单例 饿汉式_Java-单例设计模式(懒汉与饿汉)

单例设计模式保证一个类在内存中只能有一个对象。思路:1)如果其他程序能够随意用 new 创建该类对象,那么就无法控制个数。因此,不让其他程序用 new 创建该类的对象。2)既然不让其他程序 new 该类对象,那么该类在自己内部就要创建一…

【HYSBZ - 2763 】飞行路线 (分层图最短路,最短路dp)

题干: Alice和Bob现在要乘飞机旅行,他们选择了一家相对便宜的航空公司。该航空公司一共在n个城市设有业务,设这些城市分别标记为0到n-1,一共有m种航线,每种航线连接两个城市,并且航线有一定的价格。Alice和…

java 命令行 编译 jar文件_用命令行编译java并生成可执行的jar包

如果想用java编写一个可视化小程序,碰巧手头没有IDE的话,可以用命令行来完成编译、打包等工作。拿自己编写的“java记事本”为例,介绍一下这个过程:1.编写源代码。编写源文件:NotePad.java并保存,例如&…

【牛客 - 369A】小D的剧场(线性dp)

题干: 链接:https://ac.nowcoder.com/acm/contest/369/A 来源:牛客网 题目描述 "我明白。" 作为这命运剧场永远的观众,小D一直注视着这片星光璀璨的舞台,舞台上,少女们的身姿演绎出了一幕幕…

java list遍历添加元素_java遍历List过程中添加和删除元素的问题

遍历元素最常见的三种方法://第三种遍历【利用迭代器】private static void loopList3(List strList) {Iterator itr strList.iterator();while (itr.hasNext()){String tmp itr.next();if("000".equals(tmp)){itr.remove();}else{System.out.println(t…

【蓝桥杯官网试题 - 算法提高 】求最大值 (dp,0-1背包)

题干: 问题描述 给n个有序整数对ai bi,你需要选择一些整数对 使得所有你选定的数的aibi的和最大。并且要求你选定的数对的ai之和非负,bi之和非负。 输入格式 输入的第一行为n,数对的个数   以下n行每行两个整数 ai bi 输出格…

java button 圆角_UIButton具有渐变边框和圆角

我想要的是一个自定义UIButton,它有一个渐变边框(只是边框是渐变)和圆角 . 我几乎到了我想去的地方,但是角落有问题 . 这是我目前拥有的:这是我的代码:override func viewDidLoad() {super.viewDidLoad()let gradient CAGradient…

【牛客 - 368B】选点(dfs序,LIS 或 dfs序 + 树状数组 + 离散化,树状数组求LIS的方法)

题干: 有一棵n个节点的二叉树,1为根节点,每个节点有一个值wi。现在要选出尽量多的点。 对于任意一棵子树,都要满足: 如果选了根节点的话,在这棵子树内选的其他的点都要比根节点的值大; 如…

java xsd 解析 xml文件_Java针对XSD文件验证XML文件的最佳方法是什么?

小编典典Java运行时库支持验证。上次我检查的是幕后的Apache Xerces解析器。你可能应该使用javax.xml.validation.Validator。import javax.xml.XMLConstants;import javax.xml.transform.Source;import javax.xml.transform.stream.StreamSource;import javax.xml.validation.…

*【CodeForces - 859C 】Pie Rules (博弈dp,时光倒流)

题干: You may have heard of the pie rule before. It states that if two people wish to fairly share a slice of pie, one person should cut the slice in half, and the other person should choose who gets which slice. Alice and Bob have many slices …

【牛客 - 318F】关于我转生变成史莱姆这档事(二分,搜索)

题干: 有一天,利姆鲁在这个世界最重要的人静被魔王带走,并将其困在一个n*n的迷宫内的某一处,迷宫的每个格子都可能有一只魔物,魔物的攻击力为a[i][j],因而利姆鲁只有当攻击力大于等于a[i][j]才能通过这个方…

java获取xlsx某列数据_Java读取Excel指定列的数据详细教程和注意事项

本文使用jxl.jar工具类库实现读取Excel中指定列的数据。jxl.jar是通过java操作excel表格的工具类库,是由java语言开发而成的。这套API是纯Java的,并不依赖Windows系统,即使运行在Linux下,它同样能够正确的处理Excel文件。支持Exce…

【CodeForces - 988C 】Equal Sums (思维,STLmap,STLset,tricks)

题干: You are given kk sequences of integers. The length of the ii-th sequence equals to nini. You have to choose exactly two sequences ii and jj (i≠ji≠j) such that you can remove exactly one element in each of them in such a way that the su…

java quartz 数据库_SpringBoot+Quartz+数据库存储

Spring整合Quartza、quartz调度框架是有内置表的进入quartz的官网http://www.quartz-scheduler.org/,点击Downloads,下载后在目录\docs\dbTables下有常用数据库创建quartz表的脚本,例如:“tables_mysql.sql”table_mysql.sqltable…

【CodeForces - 1062C】Banh-mi (贪心,数学,找规律,快速幂)

题干: JATC loves Banh-mi (a Vietnamese food). His affection for Banh-mi is so much that he always has it for breakfast. This morning, as usual, he buys a Banh-mi and decides to enjoy it in a special way. First, he splits the Banh-mi into nn pa…

【牛客 - 练习】约数个数的和(数论,数学)

题干: 给个n,求1到n的所有数的约数个数的和~ 输入描述: 第一行一个正整数n 输出描述: 输出一个整数,表示答案 示例1 输入 复制 3 输出 复制 5 说明 样例解释: 1有1个约数1 2有2个约数1,2 3有2个约数1,3 备注: n…

mysql json 创建索引_MySQL · 最佳实践 · 如何索引JSON字段

概述MySQL从5.7.8起开始支持JSON字段,这极大的丰富了MySQL的数据类型。也方便了广大开发人员。但MySQL并没有提供对JSON对象中的字段进行索引的功能,至少没有直接对其字段进行索引的方法。本文将介绍利用MySQL 5.7中的虚拟字段的功能来对JSON对象中的字段…

mysql链路跟踪工具_EasySwoole利用链路追踪组件制作甩锅工具

前言最近前端老是反馈API调用异常,说请求成功但是没有数据返回!我写的代码怎么可能有bug,肯定是前端调用的方式不对!经过一番套鼓,直接把请求参数和响应内容打印到控制台,果然不出我所料,请求缺…

【CCFCSP- 201312-4】有趣的数(线性dp)

题干: 试题编号:201312-4试题名称:有趣的数时间限制:1.0s内存限制:256.0MB问题描述: 问题描述   我们把一个数称为有趣的,当且仅当:   1. 它的数字只包含0, 1, 2, 3&#xff0c…