说明:turtle是Python内置的一个非常有趣的模块,特别适合对计算机程序设计进行初体验的小伙伴,它最早是Logo语言的一部分,Logo语言是Wally Feurzig和Seymour Papert在1966发明的编程语言。
1 import turtle 2 3 turtle.pensize(4) 4 turtle.pencolor(‘red‘) 5 6 turtle.forward(100) 7 turtle.right(90) 8 turtle.forward(100) 9 turtle.right(90) 10 11 turtle.mainloop()
变量名由字母(广义的Unicode字符,不包括特殊字符)、数字和下划线构成,数字不能开头。 用type()检查变量的类型。
int
和long
两种类型的整数,因此在Python 3.x中整数只有int这一种),而且支持二进制(如0b100
,换算成十进制是4)、八进制(如0o100
,换算成十进制是64)、十进制(100
)和十六进制(0x100
,换算成十进制是256)的表示法。123.456
)之外还支持科学计数法(如1.23456e2
)。‘hello‘
和"hello"
,字符串还有原始字符串表示法、字节字符串表示法、Unicode字符串表示法。True
、False
两种值。在Python中可以直接用True
、False
表示布尔值(请注意大小写),也可以通过布尔运算计算出来(例如3 < 5
会产生布尔值True
,而2 == 1
会产生布尔值False
)。3+5j
,跟数学上的复数表示一样,唯一不同的是虚部的i
换成了j
。了解一下就可以了可以使用Python中内置的函数对变量类型进行转换。
int()
:将一个数值或字符串转换成整数,可以指定进制。float()
:将一个字符串转换成浮点数。str()
:将指定的对象转换成字符串形式,可以指定编码。chr()
:将整数转换成该编码对应的字符串(一个字符)。ord()
:将字符串(一个字符)转换成对应的编码(整数)。a = int(input(‘a = ‘)) # 用input()函数获取键盘输入字符串 b = int(input(‘b = ‘)) print(‘%d %% %d = %d‘ % (a, b, a % b)) # %%表示百分号
短路处理: and
运算符左边为False
的情况下,右边的表达式根本不会执行; or 左边的布尔值为True
的情况下,右边的表达式根本不会执行
运算符 | 描述 |
---|---|
[] [:] |
下标,切片 |
** |
指数 |
/ % // |
加,减, 乘,除,模,整除 |
>> << |
右移,左移 |
& |
按位与,按位异或,按位或, 按位取反 |
<= < > >= |
小于等于,小于,大于,大于等于,等于,不等于 |
is / is not |
身份运算符 |
in / not in |
成员运算符 |
not / or /and |
逻辑运算符 |
= += -= *= /= %= //= **= &= ` |
= ^= >>= <<=` |
break
只能终止它所在的那个循环; continue
用来放弃本次循环后续的代码直接让循环进入下一轮。
range(101)
:产生0到100范围的整数,需要注意的是取不到101。range(1, 101)
:产生1到100范围的整数,相当于前闭后开区间。range(1, 101, 2)
:产生1到100的奇数,其中2是步长,即每次数值递增的值。range(100, 0, -2)
:产生100到1的偶数,其中-2是步长,即每次数字递减的值。在Python中,函数的参数可以有默认值,也支持使用可变参数,所以Python并不需要像其他语言一样支持函数的重载,
def add(*args): # 可变参数 total = 0 for val in args: total += val return total
Python查找一个变量时会按照“局部作用域”、“嵌套作用域”、“全局作用域”和“内置作用域”的顺序进行搜索,所谓的“内置作用域”就是Python内置的那些标识符,我们之前用过的input
、print
、int
等都属于内置作用域。
‘‘‘用global关键字来指示foo函数中的变量a来自于全局作用域,如果全局作用域中没有a,下面一行代码就会定义变量a并将其置于全局作用域。同理,如果希望函数内部的函数能够修改嵌套作用域中的变量,可以使用nonlocal关键字来指示变量来自于嵌套作用域‘‘‘ def foo(): global a a = 200 print(a) # 200 # 只有被Python解释器直接执行的模块的名字才是__main__ if __name__ == ‘__main__‘: a = 100 foo() print(a) # 200
PEP 8要求: 受保护实例属性用单个下划线开头; 私有实例属性用两个下划线开头
面向对象有三大支柱:封装、继承和多态
class Test: def __init__(self, foo): self.__foo = foo def __bar(self): print(self.__foo) def main(): test = Test(‘hello‘) test.__bar() # AttributeError: ‘Test‘ object has no attribute ‘__bar‘ test._Test__bar() # Test._Test__bar(test) 也可通过类调用对象方法但要传入对象作为参数。 print(test._Test__foo) if __name__ == "__main__": main()
@property装饰器 |
@staticmethod |
@classmethod |
__slots__: 只对当前类的对象生效,对子类并不起任何作用 |
@abstractmethod
|
![]() class Person(object): def __init__(self, name, age): self._name = name self._age = age # 访问器 - getter方法 @property def name(self): return self._name # 访问器 - getter方法 @property def age(self): return self._age # 修改器 - setter方法 @age.setter def age(self, age): self._age = age def main(): person = Person(‘王大锤‘, 12) person.age = 22 # person.name = ‘白元芳‘ # AttributeError: can‘t set attribute |
@staticmethod def is_valid(a, b, c) |
@classmethod def now(cls): # 通过cls可获取和类相关信息并创建出类对象 return cls("foo") |
# 限定Person对象只能动态绑定_name, _age和_gender属性 __slots__ = (‘_name‘, ‘_age‘, ‘_gender‘) |
抽象方法 --> 抽象类 |
def __init__(self, name, age, title):
super().__init__(name, age)
self._title = title
原文:https://www.cnblogs.com/bsszds930/p/12830704.html