美文网首页
Python基础

Python基础

作者: 纯情_小火鸡 | 来源:发表于2017-12-11 10:58 被阅读17次

Python作为一门面向对象的动态语言,有着清晰简洁的语法,并且有着许多非常强大的框架如Eventlet Networking Library;另外Python作为脚本语言,更适合开发小的应用,极其适合在应用发展初期时用来做原型。

1. Hello World!

假设你已经安装好了Python,(如果是Mac 系统会自带;如果是Windows,需要从Python的官方网站python.org下载)那么在Linux命令行输入:

$python

将直接进入python。然后在命令行提示符>>>后面输入:

>>>print('Hello World!')

我们也可以用文本编辑器写一个.py结尾的文件,然后在命令行输入:

$python hello.py

2. 基础语法

  1. **变量不需要声明 **,会自动推断出声明的类型,和Swift类似。如下:
>>> a = 1
>>> print(type(a))
<type 'int'>
>>> a = 'a'
>>> print(type(a))
<type 'str'>
  1. 数据类型:(#表示注释)

a=10 # int 整数

a=1.3 # float 浮点数

a=True # 真值 (True/False)

a='Hello!' # 字符串。字符串也可以用双引号。

>>> a = 'Hello'
>>> print(a,type(a))
('Hello', <type 'str'>)
  1. sequence(序列)是一组有顺序的对象集合 ,等价于Array

序列有两种:tuple(定值表; 或元组)list (表)

>>>s1 = (1, 2, 'I', 1.1, False)            # s1是一个tuple
>>>s2 = [True, 5, 'I']                     # s2是一个list
>>>print(s1,type(s1))
>>>print(s2,type(s2))

tuple和list一个使用(),另一个使用[] , 主要区别在于建立之后是否可变。 tuple的各个元素不可再变更(等价于NSArray),而list的各个元素可以再变更(等价于NSMutableArray)。

字符串是一种tuple。

3.1.范围引用:[下限:上限:步长]

>>> s1 = [1,2,3,4,[11,22,33,44]]
>>> print(s1[:5])                # 从开始到下标4 (下标5的元素 不包括在内)
[1, 2, 3, 4, [11, 22, 33, 44]]
>>> print(s1[2:])                # 从下标2到最后
[3, 4, [11, 22, 33, 44]]
>>> print(s1[0:5:2])             # 从下标0到下标4 (下标5不包括在内),每隔2取一个元素 (下标为0,2,4的元素)
[1, 3, [11, 22, 33, 44]]
>>> print(s1[-1])                # 序列最后一个元素
[11, 22, 33, 44]
>>> print(s1[2:0:-1])            # 从下标2到下标1
[3, 2]
  1. 词典 (dictionary)
>>> dic = {'Tom':1,'Jerry':2}         #使用{}声明词典
>>> for key in dic:
...     print dic[key]
... 
2
1
>>> print dic.keys()                 # 返回dic所有的键
['Jerry', 'Tom']
>>> print dic.values()               # 返回dic所有的值
[2, 1]
>>> print dic.items()                # 返回dic所有的元素(键值对)
[('Jerry', 2), ('Tom', 1)]
>>> del dic['Tom']                   # 删除 dic 的‘tom’元素
>>> print dic
{'Jerry': 2}
>>> dic.clear()                      # 清空dic,dict变为{}
>>> print dic
{}
  1. Python的运算符和其他语言基本一致,这里就只说明几个不太一样的地方。
>>> print 2**3              # 乘方
8
>>> print 33 in [1,2,3]      # 33是否是list [1,2,3]的一个元素
False
>>> print 1>0 and 3<=2       # 逻辑 and, or, not
False
  1. Python最具特色的是用 缩进 来标明成块的代码
i = 0
j = 2
k = 3
if i > 0:
    j = 22
    k = 33
elif i == 0:
    j = 0
    k = 0
else:
    j = -22
    k = -33
    
print j,k

在Python中,if语句如下:j = 22 和 k = 33 前面有四个空格的缩进。通过缩进,Python识别出这两个语句是隶属于if。

  1. 循环

除了 for in 之外还有range()函数

>>> idx = range(10)
>>> print idx
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

这个函数的功能是新建一个表。这个表的元素都是整数,从0开始,下一个元素比前一个大1, 直到函数中所写的上限 (不包括该上限本身)

  1. 函数
def square_sum(a,b):
    c = a**2 + b**2
    return c

print square_sum(2,3)
  1. 面向对象

既然是面向对象,那么肯定有类和对象的概念。

class Dog(object):         #继承自object
    eat = True             #属性
    bark = True
    name = 'dogge'
    def walk (self):        #定义方法,它的参数中有一个self,它是为了方便我们引用对象自身。方法的第一个参数必须是self
        return '5m/s'

class Cat(object):
    eat = True
    bark = False
    name = 'Tom'
    def walk (self):
        return '3m/s'

class UsaShorthair(Cat):
    def __init__(self,_name):   #初始化函数,在建立对象时自动执行
        name = _name

    def jump(self,height):
        return str(height)+'m'
    
obj = UsaShorthair('Qi')
print obj.name,obj.eat,obj.bark,obj.walk(),obj.color,obj.jump(0.5)
  1. 文件输入输出
>>> f = open("/Users/thinkive/Desktop/text.txt","w")        #f = open(文件名,模式)  # w 写入
>>> f.write("这是一个写入的测试\n")
>>> f.write("这是另一行写入测试\n")
>>> f.write("这是第三行写入测试\n")
>>> f.write("tom, 12, 86\n")
>>> f.write("lee, 15, 99\n")
>>> f.write("lucy, 11, 60")
>>> f.close()
>>> of = open("/Users/thinkive/Desktop/text.txt","r")       # r 只读
>>> content = of.read()
>>> print(content)
这是一个写入的测试
这是另一行写入测试
这是第三行写入测试
tom, 12, 86
lee, 15, 99
lucy, 11, 60
>>> 
  1. 参数默认值
  • 我们一般是通过位置传参,也可以根据每个参数的名字传递参数。
  • 在定义函数的时候,使用形如a=10的方式,可以给参数赋予默认值(default)。如果该参数最终没有被传递值,将使用该默认值。
>>> def fuc(a,b,c=1):
...     return a+b+c
... 
>>> print(fuc(3,2))
6
>>> print(fuc(10,10,10))
30
>>> print(fuc(c=1,b=2,a=10))
13
  1. 包裹(packing)位置传递

有时候我们并不知道调用的时候会传递多少参数,这时候可以使用包裹(packing)位置传递

  • 在func的参数表中,所有的参数被name收集,根据位置合并成一个元组(tuple),这就是包裹位置传递。
  • 为了提醒Python参数,name是包裹位置传递所用的元组名,在定义func时,在name前加*号。
  • 参数dict是包裹关键字传递所用的字典,在dict前加**。
  • *,也可以在调用的时候使用,即解包裹(unpacking)。
>>> def func(*pack):
...     print pack
...     print type(pack)
... 
>>> func(1,2,3)
(1, 2, 3)
<type 'tuple'>
>>> func(1,'hi',True)
(1, 'hi', True)
<type 'tuple'>
  1. lambda函数

lambda函数在C++中也叫做lambda表达式;等价于OC的block和swift的closesure。同样的,函数也可以作为对象进行参数传递。

>>> func = lambda x,y,z: x+y+z
>>> print func(1,2,3)
6
>>> def func2(func,b):
...     print func+b
... 
>>> func2(func(1,2,3),10)
16

相关文章

网友评论

      本文标题:Python基础

      本文链接:https://www.haomeiwen.com/subject/nlqiixtx.html