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 "<pyshell#7>", line 1, in <module>
    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 "<pyshell#70>", line 1, in <module>
    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 "<pyshell#88>", line 1, in <module>
    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 "<pyshell#91>", line 1, in <module>
    raise MyError('自定义异常')
MyError: '自定义异常'
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,033评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,725评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,473评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,846评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,848评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,691评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,053评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,700评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,856评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,676评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,787评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,430评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,034评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,990评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,218评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,174评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,526评论 2 343

推荐阅读更多精彩内容

  • 〇、前言 本文共108张图,流量党请慎重! 历时1个半月,我把自己学习Python基础知识的框架详细梳理了一遍。 ...
    Raxxie阅读 18,915评论 17 410
  • 1.ios高性能编程 (1).内层 最小的内层平均值和峰值(2).耗电量 高效的算法和数据结构(3).初始化时...
    欧辰_OSR阅读 29,300评论 8 265
  • 在我很小的时候,就发誓,要一辈子打光棍,去过那种流浪的生活,可以无拘无束,一个人,想去哪里就去哪里,顶着温和的月色...
    唯美_f9c2阅读 272评论 0 1
  • 大家所认为的鼠类,大概就是指老鼠,说到老鼠,大多没有什么好词了,什么贼眉鼠眼,鼠目寸光,区区鼠辈等等。老鼠是杂食动...
    兰奕阅读 543评论 0 0
  • 今天听了萧秋水老师的课程,受益颇多,一下子抚平了我近个月来起起伏伏起起的心绪。我觉得应该把这些经验写下来,希望也能...
    心如采薇阅读 335评论 0 4