前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >90% of python in 90 minutes

90% of python in 90 minutes

作者头像
s1mba
发布2017-12-28 12:18:43
6830
发布2017-12-28 12:18:43
举报
文章被收录于专栏:开发与安全开发与安全

注:本文整理自 http://www.slideshare.net/MattHarrison4/learn-90

---------------------------------------------------------------

Three Python'isms to Remember

●dir ●help ●colon/indent shuffle

一、hello world

print "hello world" from interpreter $ python >>> print "hello world" hello world REPL Read, Eval, Print, Loop $ python >>> 2 + 2  # read, eval 4 # print >>>   # repeat (loop) Many developers keep a REPL handy during programming From script Make file hello.py with print "hello world" Run with: python hello.py (unix) script Make file hello with #!/usr/bin/env python print "hello world" Run with: chmod +x hello ./hello Python 3 hello world printis no longer a statement, but a function print("hello world")

二、Objects

Everything in Python is an object that has: ●an identity(id) ●a value(mutable or immutable) id >>> a = 4 >>> id(a) 6406896 Value ●Mutable:When you alter the item, the  id is still the same. Dictionary, List ●Immutable:String, Integer, Tuple Mutable >>> b =[] >>> id(b) 140675605442000 >>> b.append(3) >>> b [3] >>> id(b) 140675605442000 # SAME! Immutable >>> a = 4 >>> id(a) 6406896 >>> a =a + 1 >>> id(a) 6406872 # DIFFERENT!

三、Variables

a = 4  # Integer b = 5.6  # Float c = "hello"  # String a = "4"  # rebound to String Long >>> import sys >>> sys.maxint 9223372036854775807 >>> sys.maxint + 1 9223372036854775808L

四、Naming

●lowercase ●underscore_between_words ●don't start with numbers See PEP 8 PEP:Python Enhancement Proposal (similar to JSR in Java)

五、Math

+, -, *, /, **(power), %(modulo) Careful with integer division >>> 3/4 0 >>> 3/4. 0.75 (In Python 3 // is integer division operator)

六、Strings

name = 'matt' with_quote = "I ain't gonna" longer = """This string has multiple lines in it""" String escaping Escape with \ >>> print 'He said, "I\'m sorry"' He said, "I'm sorry" >>> print '''He said, "I'm sorry"''' He said, "I'm sorry" >>> print """He said, "I'm sorry\"""" He said, "I'm sorry"

String formatting c-like >>> "%s %s" %('hello', 'world') 'hello world' PEP 3101 style >>> "{0} {1}".format('hello', 'world') 'hello world' String Methods ●s.endswith(sub) Returns True if endswith sub ●s.find(sub) Returns index of subor -1 ●s.format(*args) Places args in string ●s.index(sub) Returns index of subor exception ●s.join(list) Returns listitems separated by string ●s.strip() Removes whitespace from start/end

七、Methods & dir

dir Lists attributes and methods: >>> dir("a string") ['__add__', '__class__', ..., 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill'] dunder methods dunder(double under) or "special/magic"  methods determine what will happen  when +(__add__) or /(__div__) is  called. help >>> help("a string".startswith) Help on built-in function startswith: startswith(...) S.startswith(prefix[, start[, end]]) -> bool Return True if S starts with the specified prefix, False otherwise. With optional start, test S beginning at that position. With optional end, stop comparing S at that position. prefix can also be a tuple of strings to try.

八、Comments

Comments follow a # No multi-line comments

九、More Types

None Pythonic way of saying NULL. Evaluates to False. c = None booleans a = True b = False sequences ●lists ●tuples ●sets

十、Lists

Hold sequences. How would we find out the attributes & methods of a list? >>> dir([]) ['__add__', '__class__', '__contains__',... ,'__iter__',... '__len__',... , 'append', 'count', 'extend', 'index', 'insert', 'pop', 'remove',  'reverse', 'sort'] >>> a =[] >>> a.append(4) >>> a.append('hello') >>> a.append(1) >>> a.sort() # in place >>> print a [1, 4, 'hello'] How would we find out documentation for a method? >>> help([].append) Help on built-in function append: append(...)

L.append(object) -- append object to end List methods ●l.append(x) Insert x at end of list ●l.extend(l2) Add l2 items to list ●l.sort() In place sort ●l.reverse() Reverse list in place ●l.remove(item) Remove first item found ●l.pop() Remove/return item at end of list

十一、Dictionaries

Also called hashmap or associative array elsewhere >>> age ={} >>> age['george'] = 10 >>> age['fred'] = 12 >>> age['henry'] = 10 >>> print age['george'] 10 Find out if 'matt' in age >>> 'matt' in age False in statement Uses __contains__dunder method to determine membership. (Or __iter__as fallback) .get >>> print age['charles'] Traceback (most recent call last): File "<stdin>", line 1, in <module> KeyError: 'charles' >>> print age.get('charles', 'Not found') Not found

deleting keys Removing 'charles' from age >>> delage['charles']

del not in dir.   .pop is an alternative

十二、Functions

def add_2(num):

""" return 2 more than num """ return num + 2 five =add_2(3) ●def ●function name ●(parameters) ●:+ indent ●optional documentation ●body ●return whitespace Instead of { use a : and indent consistently (4 spaces) invoke python -tt to error out during inconsistent tab/space usage in a file default (named) parameters def add_n(num, n=3):

"""default to adding 3""" return num +n

five =add_n(2) ten =add_n(15, -5) __doc__ Functions have docstrings. Accessible via .__doc__or help >>> def echo(txt):

...   "echo back txt" ...   return txt

>>> help(echo) Help on function echo in module __main__: <BLANKLINE> echo(txt)

echo back txt

<BLANKLINE> naming ●lowercase ●underscore_between_words ●don't start with numbers ●verb See PEP 8

十三、Conditionals

if grade > 90:

print "A"

elif grade > 80:

print "B"

elif grade > 70:

print "C"

else:

print "D" Remember the colon/whitespace!

十四、Operators

Comparison Operators Supports (>, >=, <, <=, ==, !=) >>> 5 > 9 False >>> 'matt' != 'fred' True >>> isinstance('matt', basestring) True >>> type("matt") <type 'str'> Boolean Operators and, or, not(for logical), &, |, and ^(for bitwise) >>> x = 5 >>> x < -4 or x > 4 True Boolean note Parens are only required for precedence if (x > 10):

print "Big"

same as if x > 10:

print "Big" Chained comparisons if 3 <x < 5:

print "Four!"

Same as if x > 3 and x < 5:

print "Four!"

十五、Iteration

for number in [1,2,3,4,5,6]:

print number

for number in range(1, 7):

print number range note Python tends to follow half-open interval ([start,end)) with range and slices. ●end - start = length ●easy to concat ranges w/o overlap Java/C-esque style of object in array, access (BAD): animals =["cat", "dog", "bird"] for index in range(len(animals)):

print index, animals[index] If you need indices, use enumerate animals =["cat", "dog", "bird"] for index, value in enumerate(animals):

print index, value

Can breakout of nearest loop for item insequence:

# process until first negative if item < 0:

break

# process item

Can continue to skip over items for item in sequence:

if item < 0: continue # process all positive items

Can loop over lists, strings, iterators, dictionaries... sequence like things: my_dict ={ "name": "matt", "cash": 5.45} for key inmy_dict.keys():

# process key

for value inmy_dict.values():

# process value

for key, value inmy_dict.items():

# process items

pass pass is a null operation for i in range(10):

# do nothing 10 times

pass

Hint: Don't modify list or dictionary contents while looping over them

十六:Slicing

Sequences (lists, tuples, strings, etc) can be sliced to pull out a single item my_pets =["dog", "cat", "bird"] favorite =my_pets[0] bird =my_pets[-1] Negative Indexing Proper way to think of [negative indexing] is to reinterpret a[-X] as a[len(a)-X]

Slices can take an end index, to pull out a list of items my_pets =["dog", "cat", "bird"]  # a list cat_and_dog =my_pets[0:2] cat_and_dog2 =my_pets[:2] cat_and_bird =my_pets[1:3] cat_and_bird2 =my_pets[1:] Slices can take a stride my_pets =["dog", "cat", "bird"]  # a list dog_and_bird =my_pets[0:3:2] zero_three_etc = range(0,10)[::3] Just to beat it in veg = "tomatoe" correct =veg[:-1] tmte =veg[::2] eotamot =veg[::-1]

十八:File IO

File Input Open a file to read from it (old style): fin = open("foo.txt") for line in fin:

# manipulate line

fin.close() File Output Open a file using 'w' to writeto a file: fout = open("bar.txt", "w") fout.write("hello world") fout.close() Always remember to close your files! closing with with implicit close(new 2.5+ style) with open('bar.txt') as fin: for line in fin:

# process line

十九:Classes

class Animal(object):

def __init__(self, name):

self.name =name

def talk(self):

print "Generic Animal Sound"

animal =Animal("thing") animal.talk() notes: ●object(base class) (fixed in 3.X) ●dunder init (constructor) ●all methods take self as first parameter Subclassing class Cat(Animal):

def talk(self):

print '%ssays, "Meow!"' %(self.name)

cat =Cat("Groucho") cat.talk() # invoke method class Cheetah(Cat):

"""classes can hav docstrings""" def talk(self):

print "Growl" naming ●CamelCase ●don't start with numbers ●Nouns

二十、Debugging

Poor mans print works a lot of the time Remember Clean up print statements. If you really need them, use logging or write to sys.stdout pdb import pdb; pdb.set_trace() pdb commands ●h- help ●s- step into ●n- next ●c- continue ●w- where am I (in stack)? ●l- list code around me

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2014-11-09 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档