zoukankan      html  css  js  c++  java
  • python3基本语法

      python基本语法

      

    # python开始练习
    
    print("我的第一个python程序!");  # 内容的打印
    
    # 这是python的单行注释
    
    '''
    这是python的多行注释
    
    '''
    
    print("注释的测试!");
    
    
    str = "如果语句太长,我们可以使用反斜
    杠来进行换行,但是在[], {}, 或 () 中的多行语句,不需要使用反斜杠()";
    print(str);    
    
    
    # python字符串有的写法多行可以使用'''或者"""包裹起来  字符串有两种索引方式,从左往右是从0开始的,从右往左,是从-1开始的
    str1 = '''你好
    ,这是一个段落,如果包裹起来,输出方式就会按照里面的内容原样输入,也会进行换行.
    ''';
    print(str1);  
    
    
    age=input("请输入您的年龄一旦按下enter键表示退出");  # 内容的输入 也就是从键盘进行输入  并进行赋值
    
    
    # python对缩进的语法特别严格,省略了java中的大括号,并且不需要编译,是一种面向对象解释型的语言,缩进为4个空格符,不是制表符
    print("==========================================================");
    print("字符串的一些用法");
    str2 = "你好,我是python";
    print(str2)                 # 输出字符串
    print(str2[0:-1])           # 输出第一个到倒数第二个的所有字符
    print(str2[0])              # 输出字符串第一个字符
    print(str2[2:5])            # 输出从第三个开始到第五个的字符     左包含右不包含
    print(str2[2:])             # 输出从第三个开始的后的所有字符
    print(str2 * 2)             # 输出字符串两次
    print(str2 + '你好')        # 连接字符串
    print('hello
    runoob')      # 使用反斜杠()+n转义特殊字符
    print(r'hello
    runoob')     # 在字符串前面添加一个 r,表示原始字符串,不会发生转义
    
    
    print("不换行的操作时在后面加上end="",用逗号隔开!!!!",end="");
    print("不换行");
    
    print("==========================================================");

     print("查看内存地址",id(12));
     print("查看有哪些方法",dir(str2));

    # python if语句
    print("==========================================================");
    if True:
        print("if语句测试");
    else:
        print("if语句为else的时候");
    
    print("==========================================================");    
    
    # python 数字类型有四种 整型 布尔类型 浮点型  复数
    
    print("=================python导入模块几种写法===================");  
    
    # 使用import 或者from ... import来导入相应的模块
    # 将整个模块(somemodule)导入,格式为: import somemodule
    
    # 从某个模块中导入某个函数,格式为: from somemodule import somefunction
    
    # 从某个模块中导入多个函数,格式为: from somemodule import firstfunc, secondfunc, thirdfunc
    
    # 将某个模块中的全部函数导入,格式为: from somemodule import *
    
    print("==========================================================");  
    
    print("python语句已经结束");
    # python的基本数据类型
    
    print("------------多个变量的赋值---------------------")
    
    a,b,c = 1,2,"你好"; # 将1,2 分别赋值给a,b ,c = "你好"
    
    print("===============================================")
    
    
    print("------------标准的数据类型---------------------")
    
    '''
    不可变数据类型: Number 数字类型  String 字符串   Tuple 元组  
    
    可变数据类型: List 列表  Set 集合  Dictionary 字典类型
    
    
    可以使用print(type(1)) 查看数据类型
    
    type()不会认为子类是一种父类类型。
    isinstance()会认为子类是一种父类类型。
    
    '''
    print("数据类型的查看",type("你好"));
    print(isinstance(a, int));  # 数据类型的判断
    
    print("------------列表的相关规则---------------------")
    
    # 列表就相当于java中的数组,
    
    list = [ 'abcd', 786 , 2.23, 'runoob', 70.2 ]
    tinylist = [123, 'runoob']
     
    print (list)            # 输出完整列表
    print (list[0])         # 输出列表第一个元素
    print (list[1:3])       # 从第二个开始输出到第三个元素
    print (list[2:])        # 输出从第三个元素开始的所有元素
    print (tinylist * 2)    # 输出两次列表
    print (list + tinylist) # 连接列表
    print (list[0:3:2])     # 从第二个开始输出到第三个元素,步长为2,间隔一个位置来取数据,就是在这个之间,间隔一个位置来取数据
    
    print("===============================================")
    
    
    print("------------元组的相关规则---------------------")
    
    # 元组和列表的区别是,元组不能进行改变  就是不能给元组进行赋值
    tuple = ( 'abcd', 786 , 2.23, 'runoob', 70.2  )
    tinytuple = (123, 'runoob')
     
    print (tuple)             # 输出完整元组
    print (tuple[0])          # 输出元组的第一个元素
    print (tuple[1:3])        # 输出从第二个元素开始到第三个元素
    print (tuple[2:])         # 输出从第三个元素开始的所有元素
    print (tinytuple * 2)     # 输出两次元组
    print (tuple + tinytuple) # 连接元组
    
    print("===============================================")
    
    
    
    print("------------集合的相关规则---------------------")
    
    # 可以进行基本功能的操作,去重等等
    student = {'Tom', 'Jim', 'Mary', 'Tom', 'Jack', 'Rose'}
     
    print(student)   # 输出集合,重复的元素被自动去掉
     
    # 成员测试
    if 'Rose' in student :
        print('Rose 在集合中')
    else :
        print('Rose 不在集合中')
     
     
    # set可以进行集合运算
    a = set('abracadabra')
    b = set('alacazam')
     
    print(a)
     
    print(a - b)     # a 和 b 的差集
     
    print(a | b)     # a 和 b 的并集
     
    print(a & b)     # a 和 b 的交集
     
    print(a ^ b)     # a 和 b 中不同时存在的元素
    
    print("===============================================")
    
    
    print("------------字典的相关规则---------------------")
    
    # 字典就相当于java中的map集合
    dict = {}
    dict['one'] = "1 - 菜鸟教程"
    dict[2]     = "2 - 菜鸟工具"
     
    tinydict = {'name': 'runoob','code':1, 'site': 'www.runoob.com'}
     
     
    print (dict['one'])       # 输出键为 'one' 的值
    print (dict[2])           # 输出键为 2 的值
    print (tinydict)          # 输出完整的字典
    print (tinydict.keys())   # 输出所有键
    print (tinydict.values()) # 输出所有值
    
    
    print("===============================================")
    
    
    print("**************************************************");
    print("python程序已经结束!!!");

      对象的使用

    # python的笔记学习
    
    # 创建一个初始的类
    class Person:
        
        # 定义类属性
        count = 0
        
        def __init__(self,name,age):
            print("类的初始化,相当于java中的构造方法")
            self.name = name
            self.age = age
            Person.count += 1  # 定义创建了几个对象
     
    
    #离上面空两行,然后调用当前这个类
    person = Person("小明",12);    
    print("%s今年%s岁了!!" %(person.name,person.age))  
     
    print("Person对象创建了%s个对象!!" %Person.count)  
     
    # 类中的属性如果为双下划线开头,则表示为私有属性,不能直接进行访问,和java中私有属性相同   
    # 括号中可以进行继承,java只能单继承,但是python可以进行多继承,默认继承object
    # 多继承就会涉及到如果父类都有相同的方法,应该执行哪个?
    # 这个和继承的类顺序是有关系的   可以通过   类.__mro__ 进行查看   
    class Person1(object):
        
        # 定义类属性
        count = 0
        
        def __new__(cls,*args,**kwargs):   # 另外两个参数  不定长参数      关键字参数 如 age=12
            print("创建的时候,被执行!!!!")
            return object.__new__(cls)
        
        def __init__(self,name,age):
            print("类的初始化,相当于java中的构造方法")
            self.__name = name    # 私有属性
            self.__age = age   
    
        @classmethod   # 类方法
        def get_count(cls):   # cls 代表着是类
            return cls.count
            
        @staticmethod  # 静态方法  跟类没有任何关系的方法,可以使用静态方法
        def get_static():
            print("静态方法!!")
            return "我是静态方法"
            
        def __del__(self):
            print("person 对象被销毁了!!!")    
        
                
    print("类方法---->",Person1.get_count()) 
    # 类方法,就是和类相关的方法就叫做类方法 用@classmethod  
    print("静态方法----->",Person1.get_static())
    
    # 销毁操作的测试,在当前程序结束的时候,进行销毁   当对象赋值为None 的时候也会执行此操作 
    Person1("小花",22)
    
    # 内置方法
    
    # __str__(self):  将对象转化为字符串,并将字符串进行返回   类的打印如果有这个方法   和__repr__ 方法随便使用
    # __class__   获取对象
    # C.__mro__   继承方法解析对象顺序
    # __len__(self): 重写长度
    # __call__(self,*args,**kwargs):  a1 = Person();  相当于调用 a1()    
    
    
    # 构造函数(就是对象创建的时候给对象进行初始化,相当于java中的构造方法)和析构函数(对象销毁的时候调用的方法,做相关的清理工作和资源的释放)
    
    # __new__ :创建对象的函数,接受参数为cls,用于创建对象的时候执行,并返回当前对象
    # __init__: 对象的初始化
    # __del__: 当一个对象从内存中被销毁的时候执行该方法
    # 执行顺序是从上往下
    
    
    print("涉及到多继承的方法解析顺序问题--->",Person.__mro__)
    
    
    print("本次程序结束!","*"*50)

       模块的导入

        
    # python中模块的引用
    
    # 在python中一个py文件,就是一个模块,模块名称就是文件名称   命名参考全部用小写,或者下划线隔开
    
    # 模块方便维护,提高代码的复用性  避免相同的函数名称等等
    
    # 比如 user.py 模块名称就是user
    
    
    
    # 随机生成一个数据
    import random    # 可以使用as进行别名
    
    
    # 方式二
    # from random import randint     如果导入多个,直接使用逗号隔开   直接使用方法民称  如 randint(1,10)  
    
    
    
    num = random.randint(1,10)
    print("随机数的调用",num)
    
    
    # 也可以导入自己定义的模块
    
    # *args 不定长数据,相当于元组
    
    
    # 调用其他模块
    
    
    
    print("本程序结束","*"*50)

      测试模块

    # 作为一个测试模块
    
    
    #  声明导入的方法名称 只对定义作为 * 导入的方法有效果
    __all__ = ["fun1","add"]
    
    def fun1():
        print("我是测试模块")
        
    
    def add(*args):
        """   计算总和      """
        values = 0
        for item in args:
            values += item
        return values    
            
            
    # 有时候为了测试 需要执行
    # 为了防止导入执行测试我们需要放入到
    
    # 当作为主程序是__name__ 为__main__   ,当为模块导入时,__name__ 为模块名称
    
    # 所以测试的时候都放入到这里
    if __name__ == "__main__":
        add_num = add(1,2,3,4,5)
        print(add_num)        

       包的知识

    # ======================包的管理===============================
    
    # 当我们有很多的模块的时候,我们可以进行分类管理,方便模块的维护,  一个目录作为一个包,包中必须要有一个__init__.py 文件
    
    # 上面的作用是: 用来初始化模块(里面可以有代码), 声明一个包的结构  使用方式是 包名.模块名称
    
    # 方式一  包名.模块名称
    # 方式二 from 包名 import 模块名称
    
    # 模块名称不能以数字开头,编译的时候是没有问题的,但是导包会出现invalid token错误
    
    
    # ============================模块的发布==============================
    
    # 第一步在最外层模块创建一个setup.py 文件
    
    from distutils.core import setup
    setup(
        name='util',       # 包名
        version='1.0',
        author='sxmd',
        author_email='',
        url='http://',
        download_url='http://',
        description='util module',
        py_modules=['util.a','util.b']   # 导入哪些模块
    )
    
    # 第二步构建模块
    python setup.py build
    
    # 第三步 生成发布压缩包   一般打包打包成*.tar.gz
    python setup.py sdist
    
    
    # ===============================模块的安装方式==========================
    
    模块名称.__file__   模块的路径(模块要使用python写的)
    
    
    pip 包的安装
    
    如果不清楚 pip -- help
    
    pip install 包名
  • 相关阅读:
    hibernate10--命名查询
    mybatis13--2级缓存
    mybatis12--一级缓存
    hibernate09--连接查询
    hibernate08--OpenSessionInView
    mybatis11--多对多关联查询
    mybatis10--自连接多对一查询
    mybatis09--自连接一对多查询
    mybatis08--关联查询多对一
    Oracle job启动与关闭
  • 原文地址:https://www.cnblogs.com/chengyangyang/p/10302944.html
Copyright © 2011-2022 走看看