前言: 很多同学估计和博主一样,照葫芦画瓢 写点python是没问题的,理论上只要懂一门语言 学其它语言的基本语法都是很容易的,难点在于针对什么场景 用什么框架, 如何针对并发做设计等。
虽说我们画瓢都能画,但是基础的入门语法 还是要熟练的,博主是java开发 ,所以本文有时会以java的语言来阐述。
python中没有大括号,用冒号, 且缩进来表示层级 4个空格为1级
java用// 表示行注释,python用#表示,
java /** **/表示段落注释 , python用 “”" “”" (全英文双引号)表示
python是弱类型,不需要手动声明变量类型
python中的main方法:
if __name__ == '__main__':
关键字区别:
python: self --> java: this
python None --> java: null
python super().method() --> java super.method (python中不算关键字)
java代码:
/**
*测试
**/
public void test(){
// do something
}
python代码:
"""
测试
"""
def test():
if 1 == 1 :
# xxx
else:
# xxx
# do something
具体看注释
# 类的专有方法:
# __init__ : 构造函数,在生成对象时调用
# __del__ : 析构函数,释放对象时使用
# __repr__ : 打印,转换
# __setitem__ : 按照索引赋值
# __getitem__: 按照索引获取值
# __len__: 获得长度
# __cmp__: 比较运算
# __call__: 函数调用
# __add__: 加运算
# __sub__: 减运算
# __mul__: 乘运算
# __truediv__: 除运算
# __mod__: 求余运算
# __pow__: 乘方
class Parent:
def method(self):
print("父类...")
# 继承
class Child(Parent):
# (构造方法)
def __init__(self):
print("子类初始化")
# 重写
def method(self):
print("子类...")
def superMethod(self):
# 调用父类
super().method()
# 用来模拟多态
class Grandson(Parent):
def method(self):
print("孙子类...")
# 多态体现
def func(obj):
obj.method()
if __name__ == '__main__':
# 创建对象
obj = Child()
obj.method()
obj.superMethod()
# 多态体现
obj1 = Grandson()
func(obj1)
与java的主要区别在于:
def __init__(self):
python中有:
全局变量
类变量
实例变量
局部变量
全局变量是定义在所有class之外的,除了定义位置不同,其它和java的全局变量一样
类变量是定义在class里面 ,该class的所有def(方法)外面的, 类似于java的静态变量
实例变量 比较特殊 可以理解为能以在一个class里面的所有def方法内部定义 且可以在整个实例中传输的全局变量
(即只在该实例中传输的全局变量 定义位置在def方法里面)
局部变量:方法里面定义的 和java的局部变量一样
# 类的专有方法:
# __init__ : 构造函数,在生成对象时调用
# __del__ : 析构函数,释放对象时使用
# __repr__ : 打印,转换
# __setitem__ : 按照索引赋值
# __getitem__: 按照索引获取值
# __len__: 获得长度
# __cmp__: 比较运算
# __call__: 函数调用
# __add__: 加运算
# __sub__: 减运算
# __mul__: 乘运算
# __truediv__: 除运算
# __mod__: 求余运算
# __pow__: 乘方
class Parent:
def method(self):
print("父类...")
# 全局变量(class外)
b = 333
# 继承
class Child(Parent):
# 类变量 (class内)
a = 0
# (构造方法)
def __init__(self):
# 局部变量
c = 666
print(f"子类初始化{Child.a}")
Child.a = 1
# 重写
def method(self):
# 实例变量
self.a = 2
print(b)
print(f"子类...:{Child.a}")
def superMethod(self):
# 调用父类
super().method()
print(f"实例变量:..{self.a}")
# 用来模拟多态
class Grandson(Parent):
def method(self):
print("孙子类...")
# 多态体现
def func(obj):
obj.method()
if __name__ == '__main__':
# 创建对象
obj = Child()
obj.method()
obj.superMethod()
# 多态体现
obj1 = Grandson()
func(obj1)
LoopOuter .py文件
# 测试Loop.py导包
def get_test_data():
arr = [1, 3, 5]
Loop.py文件
# 导包
from LoopOuter import get_test_data
def get_data():
inner_arr = [1, 3, 5]
return inner_arr
if __name__ == '__main__':
# 有返回值
res = get_data()
print(res)
for item in res:
print(item)
# 无返回值 返回None (快捷键ctrl+Q查看返回值)
res1 = get_test_data()
if res1 is None:
print("nothing")
else:
print(res1)
# 遍历字符串
my_string = "Hello"
for each_char in my_string:
print(each_char)
# 遍历字典
my_dict = {'a': 1, 'b': 2, 'c': 3}
for key, value in my_dict.items():
# f或F表示 f-strings(格式化字符串字面值),允许在字符串中包含变量和表达式的值
# 类似的还有r r或R开头的字符串会将反斜杠 \ 视为普通字符,而不是转义字符 在处理正则表达式、文件路径等场景中很有用。例如: r"C:\Users\xx
print(f"Key: {key}, Value: {value}")
dict_value = my_dict["c"]
print(f"测试字典取值:{dict_value}")
my_list = [1, 2, 3, 4, 5]
# for i 遍历
for index, item in enumerate(my_list):
print(f"Index: {index}, Value: {item}")
my_range_list = [5, 6, 7, 8]
# for index range 左闭右开[0,2)
for index in range(0, 2):
print(my_range_list[index])
arr = [1, 3, 5]
# 弹出下标(该数字从arr中也没了)
var = arr.pop(2)
print(var)
print(arr)