前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Python】:老鸟的入门笔记(1)

【Python】:老鸟的入门笔记(1)

作者头像
WEBJ2EE
发布2023-09-02 11:44:56
1490
发布2023-09-02 11:44:56
举报
文章被收录于专栏:WebJ2EEWebJ2EE

提要

哈喽,大家好!相信有很多在传统软件行业的小伙伴,日常接触JS、Java、C#这类语言多一些,很少用到Python。但是Python确实很香(例如:AI、数学、绘图等),早晚会碰上它。对于我们这些懂编程但不懂Python的“老新手”来说,只有系统、全面地科普一下Python基础知识,才能更好、更高效地搬运的代码。下面是我整理的一些笔记,分享给大家。

1. Python 有多种实现

  • CPython:标准 Python。最初的、标准的 Python 实现方式。这个名字来自它是由 ANSI C 语言代码编写而成的这个事实。
  • Jython:基于 Java 的 Python。Jython项目提供了Python在Java中的实现,为Python提供了在JVM上运行和访问用Java编写的类的好处。
  • IronPython:基于 .NET 的 Python。IronPython是Python编程语言的开源实现,与.NET紧密集成。IronPython可以使用.NET和Python库,其他.NET语言也可以轻松使用Python代码。
  • PyPy:注重速度的 Python。PyPy 提供了一个带有即时编译器(JIT)的 Python 快速实现。
  • Stackless Python:注重并发的Python。该项目基本上是 CPython 解释器的一个分支,它为语言添加了微线程、通道和调度器。微线程允许将代码组织到微线程中,从而可以并行运行代码。
  • Micro Python:如果以微控制器为目标,那么 MicroPython 是您的令一种选择。这是一个精简的实现,只需要 16kB 的 RAM 和 256kB 的空间。

2. 打包

py2exe(Windows)、PyInstaller(Linux、UNIX)可以将 Python 程序打包成独立可执行的文件,用于在未安装Python的平台上执行Python编写的应用程序。

3. 常量

  • Python 不支持自定义常量
  • 通常约定:用名称全部为大写的变量来表示常量
代码语言:javascript
复制
DB_USERNAME = "admin"
DB_PASSWORD = "sa"                                                       

4. 作用域

  • 局部变量:定义在函数内部的变量
  • 全局变量:定义在函数外部的变量
代码语言:javascript
复制
global_var = 1
def fn():
    local_var = 2

5. 对象、变量

  • 变量无须单独声明,对一个不存在的变量赋值就相当于定义了一个新变量
  • del 命令可以删除变量
  • 对象是 Python 中最基本的概念。Python 程序中处理的每样东西都是对象。例如:数字、字符串、布尔、字典、列表、集合、元组、文件、类等都是对象。
    • id() 可得到对象的地址
    • dir() 可列出对象的所有属性
    • is 判定对象的地址是否相同
    • type() 可得到对象的类型
    • == 判定对象的值是否相同
代码语言:javascript
复制
a = {"xm": "张三"}
b = {"xm": "张三"}
print(a, id(a), type(a))
print(a == b, a is b)
del a
print(a)

6. Python 的工具库层次关系

Python 的工具库是呈层级分布的。可作用于多种类型的通用操作都是以内置函数或表达式的形式出现的(例如:len()、dir()、type()等)。但是类型的操作是以方法调用的形式出现的(例如:aString.upper())。

7. 字符串(序列)

  • '、"、''' 都可用于定义字符串
    • ''' 可定义多行字符串(便于嵌入多行的JSON、XML、HTML代码)
代码语言:javascript
复制
c = '张三'
d = "李四"
e = '''你好,
王五'''
print(c, d ,e)
  • 原始(raw)字符串字面量(用 r 开头),可以去掉反斜线的转移机制。(例如:表达 Windows 下的文件路径时非常有用)。
代码语言:javascript
复制
path1 = 'c:\windows\abc\bcd'
path2 = r'c:\windows\abc\bcd'
print(path1)
print(path2)
  • 字符串是不可变的。在字符串创建后不能原位置(in place)改变,即没有任何操作允许你对原始的字符串进行改变。每个字符串操作都被定义为生成新的字符串作为其结果。
代码语言:javascript
复制
a = "hello webj2eedev"
a[0] = "h"
  • 字符串格式化:
    • %
    • format
    • f-string(Python3.6加入,推荐)
代码语言:javascript
复制
zs = "张三"
ls = "李四"

a = "hello, %s, %s." % (zs, ls)
b = "hello, {}, {}.".format(zs, ls)
c = "hello, {1}, {0}.".format(zs, ls)
d = f"hello, {zs}, {ls}."
print(a)
print(b)
print(c)
print(d)
  • * 可以重复输出字符串
代码语言:javascript
复制
zs = "张三"
print(zs*3)

8. 列表(list)、元组(tuple)、字典(dict)、集合(set)

  • 元组(tuple)和列表(list)很像,只是元组是不可变的对象。
代码语言:javascript
复制
a = [1, 2, 3, 4] # 列表,可变
b = (6, 7, 8, 9) # 元组,不可变
c = {"xm": "张三", "age": 18} # 字典
d = {"张三", "李四"} # 集合

9. 推导表达式(comprehension expression)

  • 推导源自数学中集合的概念。它是一种通过对序列中的每一项运行一个表达式来创建一个新序列的方法。
代码语言:javascript
复制
a = range(10)
b = [item ** 2 for item in a]
c = [item ** 2 for item in a if item % 2 == 0]
d = {item: item ** 2 for item in a}
e = {item for item in a}
print(b)
print(c)
print(d)
print(e)

10. 布尔值

代码语言:javascript
复制
x = True
y = False

11. 三元表达式

本质是挤在一行中的一条 if 语句

代码语言:javascript
复制
classes = {
    "张三": 18,
}
xm = "李四"
r = classes[xm] if xm in classes else "NOT EXIST"
print(r)

12. 成员运算(in、not in)

代码语言:javascript
复制
map = {
    "张三": 18,
    "李四": 30
}
xm = "hello world"
print("张三" in map, 
      "王五" not in map,
      "world" in xm)

13. 逻辑运算(not、and、or)

代码语言:javascript
复制
if(3 > 4 or 1 < 2 and 2<3):
    print("yes")
    
if(not (1 > 2)):
    print("no")

14. 函数

  • 参数传递:对于不可变类型(字符串、元组、数字),按值传递;对于可变类型,按地址传递
代码语言:javascript
复制
def add(a, b):
    return a+b

def sum(a, b=100):
    return a+b

def sub(*args):
    return args[0] - args[1]

def div(**args):
    return args["a"]/args["b"]

mul = lambda a, b: a * b

print(add(1, 2))
print(sum(1))
print(sub(1, 2))
print(div(a=100, b=2))
print(mul(4, 5))

15. 异常处理

代码语言:javascript
复制
try:
    1/0
    print("here?")
except Exception as e:
    print(e)
finally:
    print('hohoho')

参考:

Multiple Python interpreters: https://developer.fedoraproject.org/tech/languages/python/multiple-pythons.html Jython: https://www.jython.org/ IronPython: https://ironpython.net/ PyPy: https://www.pypy.org/index.html Stackless Python: https://github.com/stackless-dev/stackless/wiki/ py2exe: https://github.com/py2exe/py2exe

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-05-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 WebJ2EE 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. Python 有多种实现
  • 2. 打包
  • 3. 常量
  • 4. 作用域
  • 5. 对象、变量
  • 6. Python 的工具库层次关系
  • 7. 字符串(序列)
  • 8. 列表(list)、元组(tuple)、字典(dict)、集合(set)
  • 9. 推导表达式(comprehension expression)
  • 10. 布尔值
  • 11. 三元表达式
  • 12. 成员运算(in、not in)
  • 13. 逻辑运算(not、and、or)
  • 14. 函数
  • 15. 异常处理
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档