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 包名
  • 相关阅读:
    【PAT甲级】1043 Is It a Binary Search Tree (25 分)(判断是否为BST的先序遍历并输出后序遍历)
    Educational Codeforces Round 73 (Rated for Div. 2)F(线段树,扫描线)
    【PAT甲级】1042 Shuffling Machine (20 分)
    【PAT甲级】1041 Be Unique (20 分)(多重集)
    【PAT甲级】1040 Longest Symmetric String (25 分)(cin.getline(s,1007))
    【PAT甲级】1039 Course List for Student (25 分)(vector嵌套于map,段错误原因未知)
    Codeforces Round #588 (Div. 2)E(DFS,思维,__gcd,树)
    2017-3-9 SQL server 数据库
    2017-3-8 学生信息展示习题
    2017-3-5 C#基础 函数--递归
  • 原文地址:https://www.cnblogs.com/chengyangyang/p/10302944.html
Copyright © 2011-2022 走看看