Python 基础语法入门

主要介绍python基础语法

  • 条件判断
  • 循环
  • 函数
  • 文件读写
  • 异常
    Python 数据类型如不熟请参考 Python 数据类型

1、条件判断

>>> if True:
    print('True')
else:
    print('False')
True

2、循环

>>> numbers = [4,2,8,6,7,10]
>>> for num in numbers:
    if num ==8:
        #continue 是终止此次循环,break是终止整个for循环
        continue
    if num % 2 == 0:
        print('{} is 偶数'.format(num))
    else:
        break
else:
    print('如果没有碰到for 循环中break 会再执行else')
4 is 偶数
2 is 偶数
6 is 偶数

#for循环构建推导式,推导式就是从一个数据序列构建另一个序列的方法
>>> numbers = [0,1,2,3,4,5,6,7,8,9]
#常规写法
>>> new_numbers = []
>>> for num in numbers:
    new_numbers.append(num*10)

#列表推导式写法
>>> new_numbers = [num*10 for num in numbers]
>>> new_numbers
[0, 10, 20, 30, 40, 50, 60, 70, 80, 90]

#字典推导式
>>> dict_numbers = {num:'A' for num in numbers}
>>> dict_numbers
{0: 'A', 1: 'A', 2: 'A', 3: 'A', 4: 'A', 5: 'A', 6: 'A', 7: 'A', 8: 'A', 9: 'A'}

#可通过推导式取出字典中值为100的key
>>> dic_1 = {'a':100,'b':100,'c':200}
>>> dic_1['a']
100
>>> dic_1.items()
dict_items([('a', 100), ('b', 100), ('c', 200)])
>>> [key for key,value in dic_1.items() if value ==100]
['a', 'b']

>>> i = 1
>>> while(i<5):
    i +=1
    print(i)
2
3
4
5

3、函数

函数的主要目的是避免重复代码,函数是组织好的,可重复使用的,能够完成特定功能的代码块,它是代码块的抽象。

>>> def get_keys(dic,value):
    return [k for k,v in dic_1.items() if v ==100]
#位置参数不可以改变位置
>>> get_keys(dic_1,100)
['a', 'b']
>>> get_keys(value=100,dic=dic_1)
['a', 'b']

#参数收集
>>> def test(name,age,*args,**kwargs):
    print(name,age,*args,**kwargs)

#前面参数是必须的,后面参数可传可不传,如写接口或提交表单时等等
>>> test('Jim',16)
Jim 16
>>> test('Jim',16,['Tom','18'],{'height':175,'weight':120})
Jim 16 ['Tom', '18'] {'height': 175, 'weight': 120}

#匿名函数
>>> sum = lambda arg1, arg2: arg1 + arg2
>>> sum(10,20)
30

#装饰器 一般在项目中避免修改原函数代码会用到,修改也方便
#比如将程序中以前保留1位小数改成保留2位小数
>>> def decorator(func):
    def wrapper(*args,**kwargs):
        return round(func(*args,**kwargs),2)
    return wrapper
>>> import random
>>> def test():
    return random.random()
>>> @decorator
def test_two():
    return random.random()*10
>>> f = decorator(test)  # 完全等价于装饰器@decorator
>>> f()
0.59
>>> test_two()
9.48

4、类

用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。

#类的方法与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称, 按照惯例它的名称是 self。self 代表的是类的实例,代表当前对象的地址
>>> class Person:
    #类的实例化操作会自动调用 __init__() 方法
    def __init__(self,name,age):
      #加下划线的意思是代表这个属性是私有的,也可访问,但看不到,不加可以直接看到
        self._name = name
        self._age = age
    def get_name(self):
        return self._name
    def rename(self,new_name):
        self._name = new_name
>>> p = Person('Trump',67)
>>> p.get_name()
'Trump'
>>> p.rename('Munger')
>>> p.get_name()
'Munger'

#类的继承
>>> class Student(Person):
    def set_score(self,score):
        self._score = score
    def get_score(self):
        return self._score
    #使用@property 装饰器运行时可以直接使用s.score访问
    @property
    def score(self):
        return self._score
>>> s = Student('Leibs',47)
>>> s.set_score(100)
>>> s.get_score()
100
>>> s.score
100

#多重继承
>>> class Gamer:
    def __init__(self,interest):
        self._interest = interest
    def set_interest(self,interest):
        self._interest = interest
    @property
    def interest(self):
        return self._interest

>>> class Student(Person, Gamer):
    def __init__(self, name,age,interest):
        Person.__init__(self, name,age)
        Gamer.__init__(self, interest)
    def set_score(self,score):
        self._score = score
    @property
    def score(self):
        return self._score

>>> s = Student('Simons',78,'王者荣耀')
>>> s.set_score(88)
>>> s.interest
'王者荣耀'
>>> s.score
88

5、导包

>>> import math
>>> math.sin(math.pi/2)
1.0
#导入所有的方法
>>> from math import *
>>> sin(pi/2)
1.0
导入单个方法
>>> from math import sin

6、文件读写

#windows 路径直接复制过来open会报错
>>> f = open('E:\Test\test.txt','r')
Traceback (most recent call last):
  File "", line 1, in 
    f = open('E:\Test\test.txt','r')
OSError: [Errno 22] Invalid argument: 'E:\\Test\test.txt'

#r是保持字符串原始值的意思,就是说不对其中的符号进行转义
#f = open('E:\\Test\\test.txt','r')
>>> f = open(r'E:\Test\test.txt','r')
>>> f.read()
'浜虹敓鑻︾煭\n鎴戠敤Python'

#中文乱码需要指定编码
>>> f = open(r'E:\Test\test.txt','r',encoding="utf-8")
>>> f.read()
'人生苦短\n我用Python'
#遍历文件
>>> for line in f:
    print(line)
人生苦短
我用Python
#关闭文件
>>> f.close()

#由于文件读写时都有可能产生IOError,一旦出错,后面的f.close()就不会调用。所以,Python引入了with语句来自动帮我们调用close()方法
#写文件
>>> with open(r'E:\Test\test.txt','a+',encoding="utf-8") as f:
    f.write('\nHello, Python!')
15
>>> with open(r'E:\Test\test.txt','r',encoding="utf-8") as f:
    for line in f:
        print(line)     
人生苦短
我用Python
Hello, Python!

7、异常

>>> 1/0
Traceback (most recent call last):
  File "", line 1, in 
    1/0
ZeroDivisionError: division by zero
>>> try:
    1/0
except:
    pass
#Python pass是空语句,是为了保持程序结构的完整性。
#pass 不做任何事情,一般用做占位语句。

#如果知道异常类型可以指定异常,捕获到此异常如何处理等等
>>> try:
    1/0
except ZeroDivisionError as e:
    print(e)
division by zero

#但大部分时候我们可能不知道异常是啥时,但也不能让程序崩掉,可使用Exception 去捕获
>>> try:
    1/0
except Exception as e:
    print(e)
division by zero

#主动抛出异常
>>> raise NameError('主动抛出异常NameError')
Traceback (most recent call last):
  File "", line 1, in 
    raise NameError('主动抛出异常NameError')
NameError: 主动抛出异常NameError

#自定义异常
>>> class MyError(Exception):
        def __init__(self, value):
            self.value = value
        def __str__(self):
            return repr(self.value) 
>>> raise MyError('自定义异常')
Traceback (most recent call last):
  File "", line 1, in 
    raise MyError('自定义异常')
MyError: '自定义异常'

你可能感兴趣的:(Python 基础语法入门)