首先,为什么要学python呢?
不想当全栈的程序员不是cool girl,java、C比较难,毕业半年还给老师了,基础python比较简单(没有说python简单的意思!!高级python以后再说);装x;方便生活,因为python确实很好用。有目标才有动力!
目标:学会基础python,学会爬虫,可以在百度上爬下来一篇小说或诗词。
安装PythonPython下载
cmd执行python查看是否安装成功,出现版本号则安装成功。
跟着廖雪峰老师的教程过了一遍,Python教程 by 廖雪峰。
VSCode创建 0322.py文件。
cmd中执行。找到0322.py的目录,python 0322.py
执行代码。
# 输出print("hello python")# 输入name = input("please enter your name:")print("name:", name)
数据类型整数、浮点数、字符串、布尔值(True
、False
)、空值(None
)、变量(变量名必须是大小写英文、数字和_的组合,且不能用数字开头)、常量(在Python中,通常用全部大写的变量名表示常量)
# r''表示转义字符不转义print(r"///demo")# '''...'''表示多行内容print('''lizi是小可爱''')# 布尔值判断print(5 > 3)# 除法print("/", 10/3)# 地板除,取整print("//", 10//3)# 取余print("%", 10%3)
方法、占位符print("abcde的长度", len('abcde'))# abcde的长度 5
print("hello, %s" %"world")# hello, world
占位符 | 替换内容 |
---|---|
%d | 整数 |
%f | 浮点数 |
%s | 字符串 |
%x | 十六进制整数 |
print('%.2f%%' % 24.2455)# 24.25%
列表List内置数据类型
元素类型可以不同,也可以嵌套,如:["apple", "orange", "sweets", 2, [True, "22"]]
food = ["apple", "orange", "sweets"]print("List的长度", len(food))# List的长度 3print("List第一个、第二个、倒数第一个元素", food[0], food[1], food[-1])# List第一个、第二个、倒数第一个元素 apple orange sweets# 末尾插入元素 append()food.append("banana")print(food)# ['apple', 'orange', 'sweets', 'banana']# 指定位置插入元素 insert()food.insert(2, "bread")print(food)# ['apple', 'orange', 'bread', 'sweets', 'banana']# 删除末尾元素 pop()print(food.pop())print(food)# banana# ['apple', 'orange', 'bread', 'sweets']# 删除指定位置元素 pop(i)print(food.pop(1))print(food)# orange# ['apple', 'bread', 'sweets']# 元素替换food[0] = "peach"print(food)# ['peach', 'bread', 'sweets']
tupletuple无append()
、insert()
、pop()
等方法,一经定义后不能改变。
只有一个元素时,省略小括号,非tuple类型。可以加个逗号,代表tuple类型。
people = ("liz", "Andy", "Bob")print(people)# ('liz', 'Andy', 'Bob')test = ("Jim")print(test)# Jimtest2 = ("Jim", )print(test2)# ('Jim',)
条件判断使用if...:...else:...
height = 24if height > 30: print("1")elif height > 5: print("2")else: print("3")# 2# 只要x是非零数值、非空字符串、非空List等,就判断为True,否则为False。if x: print('True')
# 输入input()# 字符串转换为整数int()
循环for…in循环food = ["apple", "nut", "coke"]for item in food: print(item)# apple# nut# coke# 0-num的整数序列range(num)
while循环num = 2all = 3while all > 0: num = num * num all = all - 1print(num)# 256
break打断循环num = 2all = 3while all > 0: num = num * num all = all - 1 if all < 2: breakprint(num)# 16
continue跳过循环n = 0while n < 5: n = n + 1 if n%2 == 0: continue print(n)# 1# 3# 5
dict和setdictdict
全称dictionary,同map
,使用键-值(key-value)存储,方便快速查找信息。
info = {"name": "liz", "age": "18", "weight": "44kg"}print(info["name"])# lizinfo["height"] = "160cm"print(info)# {'name': 'liz', 'age': '18', 'weight': '44kg', 'height': '160cm'}print(info.get("height"))# 160cmprint(info.pop("name"))# lizprint(info)# {'age': '18', 'weight': '44kg', 'height': '160cm'}
set一组key的集合,但不存储value,元素不能重复。
s = set([1, 2, 3, 2])print(s)# {1, 2, 3}s.add(4)s.remove(1)print(s)# {2, 3, 4}a = set([1, 2, 5])print(a & s)# {2}print(a | s)# {1, 2, 3, 4, 5}
函数python内置方法 官方
# python内置函数,abs(),求绝对值print(abs(-10))# 10
自定义函数:在Python中,定义一个函数要使用def语句,依次写出函数名、括号、括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用return语句返回。
def my_abs(x):# isinstance()类型错误报错 if not isinstance(x, (int, float)): raise TypeError('bad operand type') if x >= 0: return x else: return -xprint(my_abs(-2))# 2# 空函数pass,函数占位符if a > 10: pass
参数位置参数def power(x, n): s = 1 while n > 0: n = n - 1 s = s * x return sprint(power(5, 2))# 25
默认参数必选参数在前,默认参数在后。
默认参数必须指向不变对象
def power(x, n=2): s = 1 while n > 0: n = n - 1 s = s * x return sprint(power(5))# 25
可变参数def calc(*numbers): sum = 0 for x in numbers: sum = sum + x*x return sumprint(calc(1, 2, 3))# 14nums = [1, 2, 3]print(calc(*nums))# 14
关键字参数def person(name, age, **kw): print('name:', name, 'age:', age, 'other:', kw)print(person("liz", 18))# name: liz age: 18 other: {}# Noneextra = {'city': 'Beijing', 'job': 'Engineer'}print(person('Jack', 24, **extra))# name: Jack age: 24 other: {'city': 'Beijing', 'job': 'Engineer'}# None
命名关键字参数分隔符*
后面的参数为命名关键字参数
def person(name, age, *, city, job): print(name, age, city, job)person('Jack', 24, city='Beijing', job='Engineer')# Jack 24 Beijing Engineer
数定义的顺序必须是:必选参数、默认参数、可变参数、命名关键字参数和关键字参数
def f1(a, b, c=0, *args, **kw): print('a =', a, 'b =', b, 'c =', c, 'args =', args, 'kw =', kw)f1(1, 2, 3, 'a', 'b', x=99)# a = 1 b = 2 c = 3 args = ('a', 'b') kw = {'x': 99}
递归函数递归计算1x2x3x4x……n
def fact(n): if n == 1: return 1 return n * fact(n-1)print(fact(3))# 6
尾递归def fact(n): return fact_iter(n, 1)def fact_iter(num, product): if num == 1: return product return fact_iter(num - 1, num * product)print(fact(3))# 6
高级特性切片取对象n-m
,Obj[n:m:l]
(不包含m
,每l
个数取一个),n=0
时可以省略。
people = ["Andy", "lily", "Popi", "Uu", "Wendy"]print(people[:4:2])# ['Andy', 'Popi']food = ("apple", "nuts", "banana", "strawBerry", "chicken")print(food[:3])# ('apple', 'nuts', 'banana')print("asdfghjkl"[::2])# adgjl
迭代Iteration使用for...in...
循环迭代,in
的内容需要判断是否是可循环迭代。
from collections.abc import Iterableprint(isinstance('asdf', Iterable))# True
列表生成式for
前面的if ... else
是表达式,而for
后面的if
是过滤条件,不能带else
。
# 生成1-4print(List(range(1, 5)))# [1, 2, 3, 4]# 生成1*1-4*4print(List(i*i for i in range(1,5)))# [1, 4, 9, 16]# 小写、去掉非字符串L1 = ['Hello', 'World', 18, 'Apple', None]L2 = [x.lower() for x in L1 if isinstance(x, str)]# ['hello', 'world', 'apple']
生成器generator一边循环一边计算的机制。有以下方法生成生成器:
将列表生成式的[]
改成()
g = (x * x for x in range(3))print(g)print(next(g))# <generator object <genexpr> at 0x000001BD81FC1270># 0for i in g: print(i)# 0# 1# 4
一个函数定义中包含yIEld
关键字函数式编程函数函数的变量可以是函数,返回也可以是函数。
def add(x, y, f): return f(x) + f(y)print(add(-5, 6, abs))# 11
mapmap(转换规则,即将被转换的参数)
def fn(x): return x*xprint(List(map(fn, [1, 2, 3, 4])))# [1, 4, 9, 16]print(List(map(str, [1, 2, 3, 4])))# ['1', '2', '3', '4']
reducefrom functools import reducedef add(x, y): return x + yprint(reduce(add, [1, 2, 3, 4]))# 10
sorted()sorted(对象,key函数制定的规则,reverse=True)
,key
规则,可省略,reverse=True
反向排序,可省略
print(sorted([36, 5, -12, 9, -21], key=abs))# [5, 9, -12, -21, 36]
返回函数def calc_sum(*args): def sum(): n = 0 for i in args: n = n + i return n return sumf = calc_sum(1, 2, 3, 4)print(f)# <function calc_sum.<locals>.sum at 0x0000018038F1E160>print(f())# 10
形成闭包,注意:返回函数不要引用任何循环变量,或者后续会发生变化的变量。
lambda匿名函数匿名函数lambda 参数:返回值 # 无return
,没有名字,不用担心函数名冲突。
f = lambda x: x * xprint(f)# <function <lambda> at 0x000001BF94BFE0D0>print(f(5))# 25
装饰器def fn(): print('fn呀')fn()# fn呀print(fn.__name__) # 函数__name__属性,拿到函数的名字# fn# 定义一个打印日志的decoratordef log(func): def wrapper(*args, **kw): print('call %s():' % func.__name__) return func(*args, **kw) return wrapper@logdef fn(): print('fn呀')fn()# call fn():# fn呀
爬取豆瓣网栗子https://github.com/ChestnutNeko/pythonStudy/blob/main/douban.py
总结以上是内存溢出为你收集整理的Python自学过程知识点总结全部内容,希望文章能够帮你解决Python自学过程知识点总结所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)