import b #b.py文件
b.cat()
或
from b import cat
cat()
import sys
sys.path.append(r'E:\PythonProject\winycg')
'''python import模块时, 是在sys.path里按顺序查找的。
sys.path是一个列表,里面以字符串的形式存储了许多路径。
使用A.py文件中的函数需要先将他的文件路径放到sys.path中'''
import b
#b文件存在的路径:E:\PythonProject\winycg
#a.py文件:
class A:
def __init__(self,xx,yy):
self.x=xx
self.y=yy
def add(self):
print("x和y的和为:%d"%(self.x+self.y))
#导入,创建对象,再调用函数
from a import A
a=A(2,3)
a.add()
项目名:首字母大写,其余小写,用下划线增加可读性,如:Ui_test;
包名与模块名:全部小写字母;
类名:首字母大写,其余小写,多个单词驼峰命名法;
方法(函数)名:全部小写,多个单词用下划线分隔;
参数名:小写单词,如果与关键词冲突,参数名前加上下划线,比如_print;
变量:小写,多个单词用下划线分隔;
常量:全部大写,多个单词用下划线分隔;
Python 使用 # 来进行单行注释,多行注释的话使用三引号
'''
这是
Python的
多行注释
'''
a=input("请输入一个数字")
print(a)
a=1 # =为赋值,将1赋值给变量a
type(a)可以查看变量的数据类型
a=input("请输入一个数字")
print(a)
print(type(a))
数字类型转换:int(a) #将a转换为一个整数
用Ture和False
来表示真假
使用中括号[]表示,元素间用逗号分隔, 元素的数据类型可以不一样!
list1 = [1,2.0,"a",True] # 定义列表
print(list1[1]) # 通过[下标]访问元素,从0开始,结果输出:2.0
print(list1[1:3]) # 支持截取,比如这里的[1:3],结果输出:[2.0, 'a']
print(list1[1:3:2]) # 还可以有第三个参数,步长,默认为1,结果输出:[2.0]
print(list1[2:]) # 输出结果:['a', True]
print(list1[-2]) # 负数的话从后面开始访问,结果输出:a
print(list1.index("a")) # 返回参数在列表中的位置,结果输出:2
# 修改列表元素
list1[1] = 3.0 # 直接获得元素后进行修改,此时列表元素:[1, 3.0, 'a', True]
# 添加元素
list1.append('Jay') # 追加一个元素,此时列表元素:[1, 2.0, 'a', True, 'Jay']
list1.insert(2,'pig') # 插入一个元素,此时列表元素:[1, 2.0, 'pig', 'a', True]
元组中的元素不能修改,使用小括号()
s ="abcde"
list1=[1,2,3,4]
print(tuple(s))
print(tuple(list1))
('a', 'b', 'c', 'd', 'e')
(1, 2, 3, 4)
字典的每个键值 key=>value 对用冒号 : 分割,每个键值对之间用逗号 , 分割,整个字典包括在花括号 {}
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
print "dict['Name']: ", dict['Name']
print "dict['Age']: ", dict['Age']
dict['Name']: Zara
dict['Age']: 7
可以使用单引号('')
或者双引号("")
来修饰字符串, 如果想让字符串包含换行缩进等格式时,可以使用三括号('''''')
字符串格式化:
其实就是format方法的使用而已,示例如下:
str1 = "{a}生{c},{b}{d}!".format(a = "人", c = "苦短",b = "我用",d = "Python")
print(str1) # 输出结果:人生苦短,我用Python!
每个条件后需要跟一个冒号(:)
,通过缩放来划分代码块, 嵌套的时候要注意
score =input("请输入你的分数:")
int_score =int(score)
if int_score <60:
print("不及格")
elif 60<=int_score<=80:
print("中")
elif 80 <= int_score <= 90:
print("中")
else:
if int_score ==100:
print("优秀")
else:
print("满分")
#经常会出现indentationerror: expected an indented block这个错误提示,翻译过来就是缩进错误。
同样要注意冒号和缩放! 可以搭配else
使用,使用break关键字
可以跳出循环
。
r =0
p=1
while p<=100:
r +=p
p+=1
else:
print("结束")
print(r)
print(p)
a=[1,2,3,4,5,6,7]
for i in a:
print(i)
for a in range(5):
print(a)
#range(5):0 1 2 3 4
break跳出循环;continue跳过余下操作直接进入下一次循环; else也可以使用在循环,for循环条件不成立时执行,如果先break的话不会执行!
当assert关键字
后面的判断条件为假的时候,程序自动崩溃并抛出AssertionErro异常, 一般在测试程序的时候才会用到
迭代器
:用于访问集合,是一种可以记住遍历位置的对象,会从第一个元素 开始访问,直到结束,两个基本的方法:iter()
和next()
yield
来返回值, 调用时会返回一个生成器对象
,本质上还是迭代器。
对于一些重复使用的代码块,我们可以把他抽取出来写成一个函数。
使用 def关键字
修饰,后接函数名与圆括号(传入参数), 使用 return关键字
返回值,不写的话默认返回 None值。
函数必须先定义、后调用(函数调用函数例外)
def add(a,b):
return a+b
print(add(1,2))
def sub(a = 1, b = 2):
print(a+b)
sub()
def sub(a = 1, b = 2):
print(a+b)
sub(3,4)
异常 | 描述信息 |
AssertionError | 断言语句失败 |
AttributeError | 尝试访问未知的对象属性 |
IndexError | 索引超出序列的范围 |
keyError | 字典中查找一个不存在的Key |
NameError | 尝试访问一个不存在的变量 |
OSError | 操作系统产生的异常,比如FileNotFoundError |
SyntaxError | Python语法错误 |
TypeError | 不同类型间的无效操作 |
ZeroDivisionError | 除数为0 |
IOError | 输入输出错误 |
ValueError | 函数传参类型错误 |
IndentationError | 缩进错误 |
我们把可能发生错误的语句放在try模块里,用except来处理异常。except可以处理一个专门的异常,也可以处理一组圆括号中的异常,如果except后没有指定异常,则默认处理所有的异常。每一个try,都必须至少有一个except。
s1 = 'hello'
try:
int(s1)
except IndexError as e:
print(e)
s1 = 'hello'
try:
int(s1)
except Exception as e:
print(e)
如果类定义时,没有基类列表,等同于继承自object。在Python3中,object类是所有对象的根基类。
class A:
pass
#等价于
class A(object):
pass
class Person:
def cry(self): #类方法:跟函数的定义类似,但是self参数自带的,这也是类的方法和普通方法的区别。
print("I can cry")
def speak(self):
print("I can speak:%s"%(self.word))
tom =Person() #创建对象,直接类名(),不用像java中还要new,所以python更加简洁
tom.cry() #调用对象的方法
tom.word="hahah"
tom.speak()
tom.age =18 #给对象添加属性 ,属性不用在类定义时声明,但这种方法给对象赋值麻烦,每个对象都要赋值。
tom.age =19 #上面已经给tom添加过age属性,再次属于调用,重新赋值。
#属性虽然初始化了,但是固定死的,而实际每个对象的属性就不同。所以通过初始化时调用参数的形式,给每个对象赋不同的属性值
class Person2:
def __init__(self,name,age):
self.age =age #这种用法类似java中的this.age=age.self意思可以理解为当前对象
self.name = name #表示将当前对象传进来的参数name的值赋给当前对象的属性name
self.country = "china" #还是可以给类的每个对象都赋一个默认值。
def speak(self):
print("name=%s,age=%d"%(self.name,self.age))
-----------创建对象------------------------------------------------------------------------
p1 = Person2("allen",19)
p2 = Person2("sherry",22)
p3 = p2 #让p3=p2.对象的赋值
p1.speak()
p2.speak()
class MyClass():
"""
MyClass 是一个类
"""
def __init__(self, name):
"""
init是构造函数,在实例化对象的时候初始化数据(创建对象的时候会先运行这个方法)
"""
self.name = name # 这是实例变量,作用域就是实例本身 相当于 t1.name = name
def my_function(self):
"""
my_function 是一个方法
"""
print("%s在调用这个方法" % self.name)
t1 = MyClass('张三') # 这里只传了"张三",但实际上 程序会把"t1"也传过去, self接手
# t1 是一个实例
# MyClass() 是一个对象
t1.my_function()
# 输出:张三在调用这个方法
总结:
1、__init__()方法,在创建一个对象时默认被调用,类似Java中构造器。不需要手动调用
2、__init__(self)中,默认有1个参数名字为self,必须写。如果在创建对象时传递了2个实参,那么__init__(self)中出了self作为3、第一个形参外还需要2个形参,例如__init__(self,age,name).第一个self不需要手动传参。
4、__init__(self)中的self参数,不需要开发者传递,python解释器会自动把当前的对象引用传递进去
5、python中一个类中只能有一个__init__方法,不支持该方法的重载(类似java中构造器的重载)
定义子类的时候,必须在括号内指定父类的名称。init 函数接收创建实例的所需参数,注意一点:这里必须包括父类init 函数的参数。你也可以添加你自己的参数:
class Animals:
def __init__(self,name,type,age):
self.name=name
self.type=type
self.age=age
def who(self):
print("我是{}".format(self.name))
def whichtype(self):
print("我是{}".format(self.type))
def ag(self):
print("我今年{}岁了".format(self.age))
a=Animals("兔兔","草食系",6)
a.who()
a.whichtype()
a.ag()
class cat(Animals):
def __init__(self,name,type,age,like):
self.like=like
super().__init__(name,type,age)
def hobby(self):
print("我最喜欢{}".format(self.like))
littlecat =cat("小猫猫","肉食系",2,"逗猫棒")
littlecat.who()
littlecat.whichtype()
littlecat.ag()
littlecat.hobby()
+号直接搜索添加
打开cmd执行pip
pip3 install 库名 | 安装 |
python3 -m pip install 库名 | 作用同上,可以区分python2和python3而已 |
pip install --upgrade pip | 更新pip |
pip uninstall 库名 | 卸载库 |
pip list | 查看已安装库列表 |