本文不是一篇系统的从零开始学习Python的教程,若是你须要从零开始学习Python,廖雪峰的官方网站
中Python教程
这部分将是比较好的一种选择,若是你英语比较好,也能够在国外的一些网站上找到优质的教学视频(好比某油管视频网站)。python
阅读本文的前提可能须要你有必定的编程基础,并最好了解一种以上其余主流的面向对象的编程语言,好比Java、C#、PHP等。编程
首先须要了解的是,Python与PHP相似,是一种解释型的编程语言,与之对应的是Java、C#这类编译型的语言。我本身有比较丰富的C#和PHP方面的经验,两种类型的语言(指解释型和编译型)各有各的优缺点。随着各类语言的发展,如今各类语言之间也会互相借鉴一些好的特性,所以语言之间的差别也开始愈来愈模糊。因此我认为语言并无好坏之分,而是某种语言会更适合在某些场景下使用,若是你会多种语言,能够根据需求选用不一样的语言开发,从而达到事半功倍的效果。api
这里只说三点,与其余语言相同或者类似之处就不作解释了。数组
#
# This is one line comment编程语言
'''
(三个单引号)起始,并以'''
结束的''' These lines are comments. You can write multiple lines here. xxxxxxx '''
:
符号在if
, elif
, else
, for
, def
, class
等关键字行的行末应加上:
, 不然会报语法错误。函数
Python用的是4个空格做为缩进,做用域也不用花括号括起来,而是经过缩进来判断:学习
class TestClass(): def test_func(): # 4个空格缩进,表示在TestClass范围内 if True: # 8个空格缩进,表示在TestClass的test_func范围内 pass # 12个空格缩进,表示在TestClass的test_func的if判断内 print('xxx') # 8个空格缩进,表示在TestClass的test_func范围内 print('test') # 4个空格缩进,表示在TestClass范围内 print('abc') # 没有缩进,表示执行的时候总会执行到这一行
数字操做符中,有两个值得一说的操做符。网站
/
将获得小数结果,地板除//
将自动向下取整:18 / 4 = 4.5
18 // 4 = 4code
**
:5 ** 3 = 125orm
r
:raw string
s = 'daniel\nfu' # 将输出两行,第一行为daniel,第二行是fu
s = r'daniel\nfu' # 将只输出一行: daniel\nfu, 其中\n将直接输出而不做为换行符来对待
b
:binary
print(b'\xe2\x82\xac20'.decode('utf-8')) # 将输出€20
f
:format
name = 'Daniel' age = 33 print(f'My name is {name.upper()} and I am {age} years old.') # 输出结果: My name is DANIEL and I am 33 years old.
name = "Hello there, my name is Daniel Fu and I`m 33 years old." print(name[4]) # 字母o(hello的最后一个字母),从左至右第5个字母(由于index是从0开始) print(name[-3]) # 字母l(old中的l),index为负数表示从右至左第三个字母(-0和0没有区别,所以负index是从-1开始的) print(name[6:11]) # 结果为"there", 即从index6开始,到index11结束(但不包含11)的全部内容 print(name[:5]) # 结果为"Hello",省略起始值,则表示从0开始 print(name[45:]) # 结果为"years old.", 省略终止值表示从index45开始,直至字符串结束的全部内容 print(name[:]) # 省略起止值,即返回整个字符串 print(name[::5]) # 结果为"Hlotee ynm sDne uadIm3 er l.",第三个参数表示结果中每隔N(此例为5)个字母返回一个 print(name[::-2]) # 结果为".l re 3mIdau enDs mny eetolH",表示将字符串反转以后,每隔N(此例为2)个字母返回一个
切片
是个很是有意思的特性,有了这个特性,实现某些功能将会异常简单,举两个例子:
def is_palindrome(x): if not isinstance(x, str): x = str(x) return x == x[::-1] print(is_palindrome('abcdedcba')) # True print(is_palindrome(123454321)) # True print(is_palindrome('abcdefg')) # False
def capitalize_word(x): if not isinstance(x, str): return 'Argument should be a word' else: return x[:1].upper() + x[1:].lower() print(capitalize_word('daniel')) # Daniel print(capitalize_word('CHINA')) # China print(capitalize_word('wOrLd')) # World print(capitalize_word(13)) # Argument should be a word print(capitalize_word(True)) # Argument should be a word
利用切片
这种操做,有些在其余语言里看起来须要多行代码才能搞定的功能,在Python里的核心代码可能只须要一行。另外,数组(array)和元组(tuple)也可使用切片
功能,用法上和字符串切片
是同样的:
chars = ['a', 'b', 'c', 'd', 'e', 'f'] # 改为元组: ('a', 'b', 'c', 'd', 'e', 'f') 也是同样的效果,返回的结果是元组而不是数组 print(chars[1]) # b print(chars[-1]) # f print(chars[1,3]) # ['b', 'c'] print(chars[:2]) # ['a', 'b'] print(chars[4:]) # ['e', 'f'] print(chars[::-1]) # ['f', 'e', 'd', 'c', 'b', 'a'] print(chars[::2]) # ['a', 'c', 'e'] print(chars[::-2]) # ['f', 'd', 'b']
def test_func(*args): for ar in args: print(ar) print(test_func(['d', 'e', 'f'])) # 结果为:['d', 'e', 'f'] print(test_func(*['d', 'e', 'f'])) # 结果为: 'd', 'e', 'f' 三行,表示传入了3个参数。
另一个比较有意思的例子:
def drop_first_last(grades): first, *middle, last = grades # 这句将传入的参数的第一个值赋给first变量,最后一个值赋给last变量,其余任意多的值,赋给*middle这个可变长变量 avg = sum(middle) / len(middle) return avg print(drop_first_last([1, 2, 3, 4])) # 2.5 去掉1和4以后,求2和3的平均值
定义多个变量,自动对应到列表中的值:
a1, b1, c1 = [1, 2, 3] print(a1) # 1 print(b1) # 2 print(c1) # 3 a2, b2, c2 = (11, 12, 13) print(a2) # 11 print(b2) # 12 print(c2) # 13 a3, b3, c3 = 'abc' print(a3) # a print(b3) # b print(c3) # c # 参数数量对不上,则会报错 a4, b4 = ['a', 'b', 'c'] # ValueError: too many values to unpack (expected 2)
不少语言都只能从单一父类继承,而Python能够多个父类继承。
class Animal(object): def __init__(self, name): self.name = name def run(self): print(self.name, 'is running!') class AmuseThing(object): def amuse(self): print(self.name, 'is amusing you!') class Dog(Animal): def bark(self): print(self.name, 'is barking!') class Husky(Dog, AmuseThing): pass husky = Husky('Idiot husky') husky.run() # 从Dog中继承,而Dog从Animal中继承 husky.bark() # 从Dog中继承 husky.amuse() # 从AmuseThing中继承
掌握了这些知识点以后,咱们对Python有了必定的了解,这样在后续进阶一点的学习过程当中,咱们能够充分利用某些特性来实现咱们的需求。
本文在博客园和个人我的博客www.fujiabin.com上同步发布。转载请注明来源。