public:it:python

差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
后一修订版
前一修订版
public:it:python [2014/12/03 10:47] oakfirepublic:it:python [2024/01/15 15:33] (当前版本) – [Tips] oakfire
行 1: 行 1:
 ====== Python ====== ====== Python ======
   * [[https://www.python.org | Officail site: python.org]]   * [[https://www.python.org | Officail site: python.org]]
 +  * [[http://nbviewer.ipython.org/github/rasbt/python_reference/blob/master/tutorials/key_differences_between_python_2_and_3.ipynb | Key differences between python2 and 3]]
 +===== Tips =====
 +  * 快速开一个静态http服务: 进入文件夹, 然后 ''python -m SimpleHTTPServer 80''
 +  * In Terminal, type ''pydoc raw_input'' Read what it says about "raw_input". If you're on Windows try ''python -m pydoc raw_input'' instead. Get out of pydoc by typing ''q'' to quit.
 +  * python为动态语言,与js类似, list,dict等object的''=''赋值在默认为引用. 如果不需要引用, 那么拷贝list用''list2 = list1[:]'',之后list2的改动便与list1无关.
 +  * python 变快的 9 个技巧:[[https://medium.com/techtofreedom/9-subtle-tricks-to-make-your-python-code-much-faster-50be6dd69a30|9-subtle-tricks-to-make-your-python-code-much-faster]]
 +    * 拼接字符串的速度, 直接 ''+'' 快于  ''join()'' 快于 ''+='' 一项项加.
 +    * Faster List Creation: Use “[]” Over “list()” 用 ''[]''来初始化列表
 +    * Faster Membership Testing: Use a Set Over a List
 +    * Faster Data Generation: Use Comprehensions Over For Loops  用内包代替循环
 +    * Faster Loops: Prioritize Local Variables 优先使用局部变量
 +    * Faster Execution: Prioritize Built-In Modules and Libraries 优先用内置模块和库
 +    * Faster Function Calls: Leverage Cache Decorator for Easy Memoization  
 +    * Faster Infinite Loop: Prefer “while 1” Over “while True” 但是现代解释器基本都优化过, ''while TRUE'' 还更有可读性
 +    * Faster Start-Up: Import Python Modules Smartly 
 ===== 从零开始 ===== ===== 从零开始 =====
-  * [[http://learnpythonthehardway.org/book/ | learn python the hard way]] +  * [[http://learnpythonthehardway.org/book/ | learn python the hard way]] python2. 
-  * <code python>+  * Learning more: 
 +      * [[http://learnrubythehardway.org/|Learn Ruby The Hard Way]] You will learn even more about programming as you learn more programming languages, so try learning Ruby too. 
 +      * [[https://docs.djangoproject.com/en/1.4/intro/tutorial01/|The Django Tutorial]] and try to build a web application with the [[https://www.djangoproject.com/|Django Web Framewor]]. 
 +      * [[http://www.scipy.org/|SciPy]] if you're into science, math, and engineering and also [[http://dexy.it|Dexy]] for when you want to write awesome papers that incorporate SciPy or any code really. 
 +      * [[http://www.pygame.org/news.html|PyGame]] and see if you can make a game with graphics and sound. 
 +      * [[http://pandas.pydata.org/|Pandas]] for doing data manipulation and analysis. 
 +      * [[http://nltk.org/|Natural Language Tool Kit]] for analyzing written text and writing things like spam filters and chat bots. 
 +      * [[http://docs.python-requests.org/en/latest/index.html|Requests]] to learn the client side of HTTP and the web. 
 +      * [[http://simplecv.org/|SimpleCV]] to play with making your computer see things in the real world. 
 +      * [[http://scrapy.org/|ScraPy]] and try scraping some web sites to get information off them. 
 +      * [[https://www.panda3d.org/|Panda3D]] for doing 3D graphic and games. 
 +      * [[http://kivy.org/|Kivy]] for doing user interfaces on desktops and mobile platforms. 
 +      * [[http://scikit-learn.org/stable/|SciKit-Learn]] for machine learning applications. 
 +      * [[http://renpy.org/|Ren'Py]] for doing interactive fiction games, similar to what you've built in this book but with pictures. 
 +  * Notes:<code python> 
 +# -------------------------------------------------------------------------
 # ex1: Print # ex1: Print
 # -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
行 12: 行 42:
 python ex1.py python ex1.py
  
 +# -------------------------------------------------------------------------
 # ex2: Common # ex2: Common
 # This is a common # This is a common
 print "common" #This is a common too. print "common" #This is a common too.
  
 +# -------------------------------------------------------------------------
 # ex3: Numbers and Math # ex3: Numbers and Math
 # + - / * % < > <= >= # + - / * % < > <= >=
行 21: 行 53:
 print "Result is ", 2*2-3/1, "+", 7%6,"=", 2, "is", 2>1, 2**8 print "Result is ", 2*2-3/1, "+", 7%6,"=", 2, "is", 2>1, 2**8
  
 +# -------------------------------------------------------------------------
 # ex4: Variables And Names # ex4: Variables And Names
 cars = 100 cars = 100
 space_in_a_car = 4.0 space_in_a_car = 4.0
  
 +# -------------------------------------------------------------------------
 # ex5: More Variables and Printing # ex5: More Variables and Printing
 my_name = 'lucy' my_name = 'lucy'
行 31: 行 65:
 print "My name is %s, i am %d old." % ( my_name, my_age ) print "My name is %s, i am %d old." % ( my_name, my_age )
  
 +# -------------------------------------------------------------------------
 # ex6: Strings and Text # ex6: Strings and Text
 print "My name is: %r" % "lucy"  # Print "My name is:'lucy'". print "My name is: %r" % "lucy"  # Print "My name is:'lucy'".
行 37: 行 72:
 print my_name % 'lucy' # Print the same. print my_name % 'lucy' # Print the same.
  
 +# -------------------------------------------------------------------------
 # ex7: More Printing # ex7: More Printing
 print "a" + "b" + "c" * 5 # Print "abccccc" print "a" + "b" + "c" * 5 # Print "abccccc"
 +
 +# -------------------------------------------------------------------------
 +# ex8: Printing, Printing
 +formatter = "%r %r %r %r"
 +print formatter % (1, 2, 3, 4)
 +print formatter % ("one", "two", "three", "four")
 +print formatter % (True, False, False, True)
 +print formatter % (formatter, formatter, formatter, formatter)
 +
 +# -------------------------------------------------------------------------
 +# ex9: Printing, Printing, Printing
 +# Here's some new strange stuff, remember type it exactly.
 +days = "Mon Tue Wed Thu Fri Sat Sun"
 +months = "Jan\nFeb\nMar\nApr\nMay\nJun\nJul\nAug"
 +print "Here are the days: ", days
 +print "Here are the months: ", months
 +print """
 +There's something going on here.
 +With the three double-quotes.
 +We'll be able to type as much as we like.
 +Even 4 lines if we want, or 5, or 6.
 +"""
 +# -------------------------------------------------------------------------
 +# ex10
 +print "\t \\ \" '\"' "
 +
 +# -------------------------------------------------------------------------
 +# ex11: Asking Questions
 +print "How old are you?", # We put a "," (comma) at the end of each print line. This is 
 +#so print doesn't end the line with a newline character and go to the next line.
 +age = raw_input()
 +print "So, you're %r old" % age
 +
 +# -------------------------------------------------------------------------
 +# ex12: Prompting People
 +age = raw_input("How old are you ?")
 +
 +# -------------------------------------------------------------------------
 +# ex13: Parameters, Unpacking, Variables
 +from sys import argv
 +script, first, second, third = argv
 +print "The script is called:", script
 +print "Your first variable is:", first
 +print "Your second variable is:", second
 +print "Your third variable is:", third
 +
 +# ex14: Prompting and Passing
 +# Nothing impresses me.
 +
 +# -------------------------------------------------------------------------
 +# ex15: Reading Files
 +print "Type the filename :"
 +filename= raw_input("> ")
 +txt= open(filename)
 +print txt_again.read()
 +
 +# -------------------------------------------------------------------------
 +# ex16: Reading and Writing Files
 +# class file's function:
 +# close : like save
 +# read: 
 +# seek:
 +# readline -- Reads just one line of a text file.
 +# truncate -- Empties the file. Watch out if you care about the file.
 +# write('stuff')
 +# writeline
 +my_file.open('tmp.txt', 'w')
 +my_file.write('first line \n')
 +
 +# ex17: More files
 +# Nothing impresses me.
 +
 +# -------------------------------------------------------------------------
 +# ex18: Names, Variables, Code, Functions
 +# create a function by using the word 'def'
 +def my_function(*args):
 +    arg1,arg2=args
 +    print "arg1:%r, arg2:%r" % (arg1, arg2)
 +#or
 +def print_two_again(arg1, arg2):
 +    print "arg1: %r, arg2: %r" % (arg1, arg2)
 +
 +# ex19: Functions and Variables 
 +# ex20: Functions and Files
 +# ex21: Functions Can Return Something by "return"
 +# ex22: What Do You Know So Far?
 +# ex23: Read Some Code
 +# ex24: More Practice
 +# Nothing impresses me.
 +
 +# -------------------------------------------------------------------------
 +# ex25: Even More Practice
 +# in ex25.py file:
 +def break_words(stuff):
 +    """This function will break up words for us."""
 +    words = stuff.split(' ')
 +    return words
 +# usage ex25.py in Terminal:
 +import ex25
 +ex25.break_words("Hello world") # call function 'break_words' in ex25.py
 +help(ex25) # show help info about ex25.py
 +help(ex25.break_words) # show help info about function break_words in module ex25
 +# Typing 'ex25' is annoying. A shortcut is to 
 +# do your import like this: 'from ex25 import * ' which is like saying, "Import everything from ex25."
 +from ex25 import *
 +break_words("Hello world")
 +
 +# ex26: Congratulations, Take a Test!
 +# Nothing.
 +
 +# -------------------------------------------------------------------------
 +# ex27: Memorizing Logic
 +# terms:
 +and, or, not, !=, ==, >=, <=, True, False
 + 
 +# ex28: Boolean Practice
 +# Nothing impresses me.
 +
 +# -------------------------------------------------------------------------
 +# ex29: What If
 +# ex30: Else and If
 +# ex31: Making Decisions
 +people = 20
 +cats = 30
 +if cars > people:
 +    print "We should take the cars."
 +elif cars < people:
 +    print "We should not take the cars."
 +else:
 +    print "We can't decide."
 +
 +# -------------------------------------------------------------------------
 +# ex32: Loops and Lists
 +the_count = [1, 2, 3, 4, 5]
 +fruits = ['apples', 'oranges', 'pears', 'apricots']
 +change = [1, 'pennies', 2, 'dimes', 3, 'quarters']
 +# this first kind of for-loop goes through a list
 +for number in the_count:
 +    print "This is count %d" % number
 +for fruit in fruits:
 +    print "A fruit of type: %s" % fruit
 +# also we can go through mixed lists too
 +# notice we have to use %r since we don't know what's in it
 +for i in change:
 +    print "I got %r" % i
 +# we can also build lists, first start with an empty one
 +elements = []
 +# then use the range function to do 0 to 5 counts
 +for i in range(0, 6):
 +    print "Adding %d to the list." % i
 +    elements.append(i)
 +# now we can print them out too
 +for i in elements:
 +    print "Element was: %d" % i
 +
 +# -------------------------------------------------------------------------
 +# ex33: While Loops
 +i = 0
 +numbers = []
 +while i < 6:
 +    numbers.append(i)
 +    i += 1;
 +for num in numbers:
 +    print num
 +    
 +# ex34: Accessing Elements of Lists
 +# Nothing impresses me.
 +
 +# -------------------------------------------------------------------------
 +# ex35: Branches and Functions
 +from sys import exit
 +def gold_room():
 +    print "This room is full of gold.  How much do you take?"
 +    choice = raw_input("> ")
 +    if "0" in choice or "1" in choice:
 +        how_much = int(choice)
 +    else:
 +        dead("Man, learn to type a number.")
 +
 +    if how_much < 50:
 +        print "Nice, you're not greedy, you win!"
 +        exit(0)
 +    else:
 +        dead("You greedy bastard!")
 +
 +def dead(why):
 +    print why, "Good job!"
 +    exit(0)
 +
 +# -------------------------------------------------------------------------
 +# ex36: Designing and Debugging
 +# ex37: Symbol Review
 +# ex38: Doing Things to Lists
 +ten_things = "Apples Oranges Crows Telephone Light Sugar"
 +print "Wait there are not 10 things in that list. Let's fix that."
 +stuff = ten_things.split(' ')
 +more_stuff = ["Day", "Night", "Song", "Frisbee", "Corn", "Banana", "Girl", "Boy"]
 +while len(stuff) != 10:
 +    next_one = more_stuff.pop()
 +    print "Adding: ", next_one
 +    stuff.append(next_one)
 +    print "There are %d items now." % len(stuff)
 +print "There we go: ", stuff
 +print "Let's do some things with stuff."
 +print stuff[1]
 +print stuff[-1] # whoa! fancy
 +print stuff.pop()
 +print ' '.join(stuff) # what? cool!
 +print '#'.join(stuff[3:5]) # super stellar!
 +
 +# -------------------------------------------------------------------------
 +# ex39: Dictionaries, Oh Lovely Dictionaries
 +>>> stuff = {'name': 'lucy', 'age': 16}
 +>>> print stuff['name']
 +lucy
 +>>> stuff[1] = "Wow"
 +>>> stuff
 +{1:'Wow', 'age':16, 'name':'lucy'}
 +>>> del stuff['age']
 +>>> stuff
 +{1:'Wow', 'name':'lucy'}
 +
 +for key, value in stuff.items():
 +    print "%r : %r" % (key, value)
 +
 +# -------------------------------------------------------------------------
 +# ex40: Modules, Classes, and Objects
 +# Modules Are Like Dictionaries
 +# Classes Are Like Modules
 +# Objects are Like Import
 +# Getting Things from Things
 +# I now have three ways to get things from things:
 +## dict style
 +mystuff['apples']
 +## module style
 +mystuff.apples()
 +print mystuff.tangerine
 +## class style
 +thing = MyStuff()
 +thing.apples()
 +print thing.tangerine
 +
 +# A First Class Example:
 +class Song(object):
 +    def __init__(self, lyrics):
 +        self.lyrics = lyrics
 +    def sing_me_a_song(self):
 +        for line in self.lyrics:
 +            print line
 +
 +happy_bday = Song(["Happy birthday to you",
 +                   "I don't want to get sued",
 +                   "So I'll stop right there"])
 +bulls_on_parade = Song(["They rally around tha family",
 +                        "With pockets full of shells"])
 +happy_bday.sing_me_a_song()
 +bulls_on_parade.sing_me_a_song()
 +
 +# ex41: Learning To Speak Object Oriented
 +# ex42: Is-A, Has-A, Objects, and Classes
 +super
 +
 +# -------------------------------------------------------------------------
 +# ex43: Basic Object-Oriented Analysis and Design
 +# ex44: Inheritance Versus Composition
 +class Parent(object):
 +    def override(self):
 +        print "PARENT override()"
 +    def implicit(self):
 +        print "PARENT implicit()"
 +    def altered(self):
 +        print "PARENT altered()"
 +class Child(Parent):
 +    def override(self):
 +        print "CHILD override()"
 +    def altered(self):
 +        print "CHILD, BEFORE PARENT altered()"
 +        super(Child, self).altered()
 +        print "CHILD, AFTER PARENT altered()"
 +
 +dad = Parent()
 +son = Child()
 +dad.implicit()
 +son.implicit()
 +dad.override()
 +son.override()
 +dad.altered()
 +son.altered()
 +
 +# multiple inheritance
 +class SuperFun(Child, BadStuff):
 +    pass
 +# Using super() with __init__
 +class Child(Parent):
 +    def __init__(self, stuff):
 +        self.stuff = stuff
 +        super(Child, self).__init__()
 +        
 +# ex45: You Make a Game  
 +# Nothing impresses me.   
 +
 +# -------------------------------------------------------------------------
 +# ex46: A Project Skeleton   
 +try:
 +    from setuptools import setup
 +except ImportError:
 +    from distutils.core import setup
 +
 +# -------------------------------------------------------------------------
 +# ex47: Automated Testing  
 +nosetests 
 +from nose.tools import *
 +assert_equal
 +# Test files go in "tests/" and are named "BLAH_tests.py" otherwise "nosetests" won't run them.   
 +
 +
 +# -------------------------------------------------------------------------
 +# ex48: Advanced User Input   
 +# A tuple is nothing more than a list that you can't modify. 
 +# It's created by putting data inside two "("")" with a comma, like a list:
 +first_word = ('verb', 'go')
 +# Exceptions and Numbers
 +def convert_number(s):
 +    try:
 +        return int(s)
 +    except ValueError:
 +        return None
 +
 +# -------------------------------------------------------------------------
 +# ex49: Making Sentences
 +# ex50: Your First Website
 +# ex51: Getting Input from a Browser
 +# ex52: The Start Of Your Web Game
 +# Nothing impresses me.
  
  
 </code> </code>
-===== Tips ===== + 
-  * 快速开一个静态http服务: 进入文件夹, 然后 ''python -m SimpleHTTPServer 80''+
  
  • public/it/python.1417574850.txt.gz
  • 最后更改: 2014/12/03 10:47
  • oakfire