Python语言学习笔记之基本语法

Python语言学习记录:
1、 3.0之前“/”默认为整除:1/2=0  ,可以通过执行语句: from __future__ import division 使得做除法运算。
    整除符号“//” : 1.0//2.0=0.0
    幂方运算符: **    -3**2=-9     (-3)**2=9   也可以用函数 pow  : pow(2,3) 也等于8
2、导入并调用模块和函数: import math
                        math.floor(32.9) = 32.0
   不用在每次调用函数的时候都加上模块名:from math import floor    那么可以直接使用函数:floor(32.9) = 32.0
                                    也可以通过变量来引用函数: foo=math.floor    然后直接 foo(32.9)
   没有返回值的return语句等价于return None。除非你提供你自己的return语句,每个函数都在结尾暗含有return None语句
3、 repr 函数会创建一个字符串(也就是说返回一个字符串),它以合法的Python表达式的形式来表示值。
     >>> print repr("123hello")    而print "123hello"  输出 123hello
        '123hello'
     >>> print repr(1000L)
        '1000L'
     其实 repr(x)等于 `x`(3.0版本中不支持使用)
        你可以通过定义类的__repr__方法来控制你的对象在被repr函数调用的时候返回的内容。
    
    str会把值转换成为合理形式的字符串。 str是一种类型 和int long一样
        >>> print str(1000L)
            1000
4、三引号(''')里面的字符串可以不需要反斜线进行转义,与r相同
'''hello world
   "it's world" '''         或者 r'c:\python'
在3.0中所有字符串都是Unicode字符串,使用u前缀表示。(普通字符串以8位的ASCII码存储,而Unicode字符则存储为16位Unicode字符)
原始字符串不能以反斜线结尾, print r"sdfs\"会报错  应该 print r"sdfs" '\\'


5、记住列表的赋值语句不创建拷贝。你得使用切片操作符来建立序列的拷贝。
shoplist = ['apple', 'mango', 'carrot', 'banana']
mylist = shoplist[:]                  # make a copy by doing a full slice
del mylist[0]                         # remove first item
print 'shoplist is', shoplist
print 'mylist is', mylist
# notice that now the two lists are different


6、类的__init__方法类似于C++、C#和Java中的 constructor 。
class Person:
    def __init__(self, name):
        self.name = name
    def sayHi(self):
        print 'Hello, my name is', self.name
7、类的方法和静态方法:属于类本身,可以直接用类名来调用;不属于某个对象。
@staticmethod
def smeth():
    print 'this  is a static method'
@classmethod
def cmeth(cls):
    print 'this is a class method of ',cls


有两种类型的 域 ——类的变量和对象的变量,它们根据是类还是对象 拥有 这个变量而区分。
类的变量 由一个类的所有对象(实例)共享使用。只有一个类变量的拷贝,所以当某个对象对类的变量做了改动的时候,这个改动会反映到所有其他的实例上。
对象的变量 由类的每个对象/实例拥有。因此每个对象有自己对这个域的一份拷贝,即它们不是共享的,在同一个类的不同实例中,虽然对象的变量有相同的名称,但是是互不相关的。
class Person:
    '''Represents a person.'''
    population = 0     #类的变量


    def __init__(self, name):
        '''Initializes the person's data.'''
        self.name = name     #对象的变量
        print '(Initializing %s)' % self.name


        # When this person is created, he/she
        # adds to the population
        Person.population += 1


    def __del__(self):
        '''I am dying.'''
        print '%s says bye.' % self.name


        Person.population -= 1


        if Person.population == 0:
            print 'I am the last one.'
        else:
            print 'There are still %d people left.' % Person.population


    def sayHi(self):
        '''Greeting by the person.


        Really, that's all it does.'''
        print 'Hi, my name is %s.' % self.name


    def howMany(self):
        '''Prints the current population.'''
        if Person.population == 1:
            print 'I am the only person here.'
        else:
            print 'We have %d persons here.' % Person.population


        swaroop = Person('Swaroop')
        swaroop.sayHi()
        swaroop.howMany()
       
        kalam = Person('Abdul Kalam')
        kalam.sayHi()
        kalam.howMany()


Python中所有的类成员(包括数据成员)都是 公共的 (static public),所有的方法都是 有效的 。
只有一个例外:如果你使用的数据成员名称以 双下划线前缀 比如__privatevar,Python的名称管理体系会有效地把它作为私有变量。
这样就有一个惯例,如果某个变量只想在类或对象中使用,就应该以单下划线前缀。而其他的名称都将作为公共的,可以被其他类/对象使用。记住这只是一个惯例,并不是Python所要求的(与双下划线前缀不同)。
同样,注意__del__方法与 destructor 的概念类似。  调用del语句


8、继承
class SchoolMember:
    '''Represents any school member.'''
    def __init__(self, name, age):
        self.name = name
        self.age = age
        print '(Initialized SchoolMember: %s)' % self.name


    def tell(self):
        '''Tell my details.'''
        print 'Name:"%s" Age:"%s"' % (self.name, self.age),


class Teacher(SchoolMember):  #如果在继承元组中列了一个以上的类,那么它就被称作 多重继承 。
    '''Represents a teacher.'''
    def __init__(self, name, age, salary):
        SchoolMember.__init__(self, name, age)   #Python不会自动调用基本类的constructor,你得亲自专门调用它。
        self.salary = salary
        print '(Initialized Teacher: %s)' % self.name


    def tell(self):
        SchoolMember.tell(self)
        print 'Salary: "%d"' % self.salary


class Student(SchoolMember):
    '''Represents a student.'''
    def __init__(self, name, age, marks):
        SchoolMember.__init__(self, name, age)
        self.marks = marks
        print '(Initialized Student: %s)' % self.name


    def tell(self):
        SchoolMember.tell(self)
        print 'Marks: "%d"' % self.marks


t = Teacher('Mrs. Shrividya', 40, 30000)
s = Student('Swaroop', 22, 75)
print         # prints a blank line
members = [t, s]
for member in members:
    member.tell() # works for both Teachers and Students


9、在print语句上使用逗号来消除自动换行
while True:
    line = f.readline()
    if len(line) == 0: # Zero length indicates EOF
        break
    print line,
10、函数参数提供默认值:只有在形参表末尾的那些参数可以有默认参数值 。例如,def func(a, b=5)是有效的,但是def func(a=5, b)是 无效 的。
def func(a, b=5, c=10):
    print 'a is', a, 'and b is', b, 'and c is', c


func(3, 7)
func(25, c=24)
func(c=50, a=100
11、dir()函数:当你为dir()提供一个模块名的时候,它返回模块定义的名称列表。如果不提供参数,它返回当前模块中定义的名称列表。
>>> dir()
['__builtins__', '__doc__', '__name__', '__package__', 'sys']
>>> a=5
>>> dir()
['__builtins__', '__doc__', '__name__', '__package__', 'a', 'sys']


12、DocStrings:文档字符串。文档字符串的惯例是一个多行字符串,它的首行以大写字母开始,句号结尾。第二行是空行,从第三行开始是详细的描述。
def printMax(x, y):
    #以下就是文档字符串
    '''Prints the maximum of two numbers.


    The two values must be integers.'''
    x = int(x) # convert to integers, if possible
    y = int(y)


    if x > y:
        print x, 'is maximum'
    else:
        print y, 'is maximum'


printMax(3, 5)
print printMax.__doc__      # help(printMax)
输出:


13、exec语句用来执行储存在字符串或文件中的Python语句。
        >>> exec 'print "Hello World"'
    eval语句用来计算存储在字符串中的有效Python表达式
       >>> eval('2*3')
        6
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值