(1)主程序main.py与模块程序mod1.py在同一目录下.
--src
|--mod1.py
|--main.py
直接在main.py中导入模块mod1.py,即 import mod1 或 from mod1 import *
---sub
? ?|--main.py
然后进入主程序main.py所在的路径,执行python main.py
执行前在main.py中加入:
import sys
sys.path.append("..")
import mod1
Python 有很多有用的内置函数, 但还是不能满足程序员的需求, 所以需要 自定义函数 .
如何编写 自定义函数 , 需要用到 def语句, 函数名, 括号及参数, 冒号, 函数说明,内置缩进编码模块,return 语句 , 其中有一些也可省略不写,后面会慢慢介绍.
编写函数不可或缺的元素, 一定都要写.函数名尽量写得简单易懂.
一般是对函数的描述说明.
这是编写具体的 操作命令 的地方, 如果还未想好如何编写, 可以使用 pass 来占位,让程序可以运行起来,防止调试出错.
参数放在最后讲, 是因为这里面的东西还是很多的.首先看个例子.
如上的案例都是限制了参数个数的, 最多传三个参数 name/age/city , 但是如果有一些特例,需要传多个参数怎么办呢. 参数前面加个 * , 变成 可变参数 .
python的内建函数即是python自带的函数,这种函数不需要定义,并且不同的内建函数具有不同的功能,可以直接使用.
以下是部分内建函数用法及说明
①.、abs(),返回数字的绝对值.
推荐学习<
①.0、classmethod,将方法转换为类方法.
①.1、compile,将源代码编译为代码或AST对象.代码对象可以由exec()或执行eval(). source可以是普通字符串,字节字符串或AST对象.
enumerate是枚举、列举的意思
对于一个可迭代的(iterable)/可遍历的对象(如列表、字符串),enumerate将其组成一个索引序列,利用它可以同时获得索引和值
enumerate多用于在for循环中得到计数
filter函数用于过滤序列
filter()把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素.
你的意思我看懂了,你是打算从ctpGateway导入ctpGateway这个py文件,但是import ... from 不是这么用的
import ... from ...的意思是从x模块导入x对象
如果有子路径的话,应该是这样 from path.moudle import instance
python的常用内置函数
①abs() 函数返回数字的绝对值
dict()
{} ? ? ?#创建一个空字典类似于u={},字典的存取方式一般为key-value
help('math')查看math模块的用处
help(a)查看列表list帮助信息
dir(help)
['__call__', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__']
a
①.0
next(it)
id(a)
a=["tom","marry","leblan"]
list(enumerate(a))
oct(10)
①.0. bin() 返回一个整数 int 或者长整数 long int 的二进制表示
bin(10)
'0b1010'
'0b1111'
①.1.eval() 函数用来执行一个字符串表达式,并返回表达式的值
f=open('test.txt')
bool()
False
bool(1)
True
bool(10)
bool(10.0)
isinstance(a,int)
isinstance(a,str)
class ? User(object):
? ? def__init__(self):
class Persons(User):
? ? ? ? ? super(Persons,self).__init__()
float(1)
①0
float(10)
①.0.0
iter(a)
for i in iter(a):
... ? ? ? ? print(i)
...
tuple(a)
s = "playbasketball"
len(s)
len(a)
class User(object):
? ?def __init__(self,name):
? ? ? ? ? ? self.name = name
? def get_name(self):
? ? ? ? ? ? return self.get_name
? @property
? ?def name(self):
? ? ? ? ? ?return self_name
list(b)
range(10)
range(0, 10)
class w(object):
a = w()
getattr(a,'s')
complex(1)
(1+0j)
complex("1")
max(b)
class Num(object):
...? ? a=1
.. print1 = Num()
print('a=',print1.a)
a= 1
print('b=',print1.b)
print('c=',print1.c)
delattr(Num,'b')
Traceback (most recent call last):? File "", line 1, inAttributeError: 'Num' object has no attribute 'b'
hash("tom")
a= set("tom")
b = set("marrt")
a,b
({'t', 'm', 'o'}, {'m', 't', 'a', 'r'})
ab#交集
{'t', 'm'}
a|b#并集
{'t', 'm', 'r', 'o', 'a'}
a-b#差集
{'o'}
python中模块导入的方法:
方式一:使用 import 语句来引入模块
直接使用关键词import,后面跟具体的模块名称,就可以导入某一个模块.同一个模块不管执行了多少次import,都只会被导入一次,以防止模块被一遍又一遍的执行.
方式二:使用from...import 语句来引入模块
在使用import语句导入模块时会将整个模块引入进来,而使用from...import 语句则是从模块中导入一个指定的部分到当前命名空间中.如上面代码中则只会导入pprint模块中的pprint函数,其他函数并不会导入.
方式三:使用from...import语句来引入模块
在多数情况下,Python程序员都不会使用这个功能,因为它在解释器中引入了一组未知的名称,而它们很可能会覆盖一些你已经定义过的东西.
注意通常情况下从一个模块或者包内调入 * 的做法是不太被接受的, 因为这通常会导致代码的可读性很差.不过,在交互式编译器中为了节省打字可以这么用.
模块的好处
①.、大大提高了代码的可维护性.
以上就是土嘎嘎小编大虾米为大家整理的相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!