zoukankan      html  css  js  c++  java
  • day77——基础知识复习1

    一、编辑器

    • python开发:pycharm(收费),vscode(免费),sublime text,
    • go开发:goland(收费),vscode,国产的
    • java:idea(收费),eclipse(免费),MyEclipse(收费)
    • android:androidstudio(免费),eclipse+adt
    • 前端:webstorm(收费)
    • php:phpstorm(收费)

    数据库开发:data

    二、编译型、解释型

    开发的系统环境:

    一般是使用windows系统作为作为主流的开发环境,但是有些框架像sanic、fastapi框架在windows上面装不上,只能用mac或者linux作为开发环境,或者在电脑上面装其他系统的虚拟环境,还可以远程连接linux系统进行开发, 或者远程联linux内的docker进行开发。

    编译型:

    • c

      c代码写完,编译(不同平台),跨平台运行,linux上源码安装软件,自行编译,运行

    • java

      java是编译型还是解释型有争议,它能做到一处编译处处都可以运行,java其实是有编译过程的,将java的源代码编译成字节文件,xxx.class,而且不能直接运行在操作系统上,需要有个java的虚拟机(jvm) ,jvm运行至少要300m的内存。

      • jdk
      • jre
      • jvm
      • javaas/javaee/javame
    • go

      跨平台编译(windows平台可以编译成mac平台的可执行文件),所有的go代码打包成一个可执行文件

    解释型:

    • python

      强类型动态语言

    • js

      只能在浏览器中运行,借助node.js可以将代码运行到后端服务器上

    • php

      web开发

    三、python就业方向

    • python后端开发

      做网站,前端可以是app,小程序的python后端

    • 自动化运维

      收集服务器软硬件信息(cmdb),jumpserver(堡垒机),sql审批/监控,日志收集/处理

      devops:ci/di

    • 自动化测试

      selenium,appnium,pytest

    • 数据分析

    • 爬虫

    • 量化交易

    • 人工智能,图像处理

    • 安全方向:端口扫描,弱口令扫描,sql注入,csrf攻击、xss攻击(书籍推荐:《利用python成为顶级黑客》)

    • 网络方向

    • 物联网方向

    四、数据类型

    python中一切皆对象,

    • type是object的类
    • type继承object
    • type是自己的类
    • object是有type实例化得到的
    • 在python3中所有的类默认都继承object类,包括type,除了object本身
    a=int(2)
    print(type(a))
    """
    <class 'int'>  int是一个类,具体实现是由c语言实现的,如果一个类的源代码方法里写的全是pass,那么就是用c写的,看不到具体的源码"""
    
    print(type(int))
    print(type(dict))
    """
    <class 'type'>
    <class 'type'>
    int/dict..都是type类的对象,并且他们都继承了object
    """
    
    # type与object的关系
    print(type(object))
    print(type(type))
    """
    <class 'type'>
    <class 'type'>
    object是type的对象,type是type自己的对象,具体用c来实现"""
    
    # 函数的类
    def a():
        pass
    
    print(type(a))
    """
    <class 'function'>
    函数是function类的对象"""
    

    五 、深浅拷贝

    一切皆对象的优点:

    不同类型之间的变量可以直接相关赋值

    a = 66
    a = 'xxx'
    """
    本质就是变量都指向了一个内存地址,由此会出现深浅拷贝的问题"""
    
    l1 = [1, 2, 3, [4, 5, 6]]
    l2 = l1
    l2[2] = 'aa'
    print(l1)
    print(l2)
    print(l2 is l1)
    """
    [1, 2, 'aa', [4, 5, 6]]
    [1, 2, 'aa', [4, 5, 6]]
    True
    """
    
    # 浅拷贝
    from copy import copy
    
    l3 = copy(l1)
    print(l1)
    print(l3)
    print(l1 is l3)
    l3[3][1] = 999
    print(l1)
    print(l3
    """
    [1, 2, 3, [4, 5, 6]]
    [1, 2, 3, [4, 5, 6]]
    False
    [1, 2, 3, [4, 999, 6]]
    [1, 2, 3, [4, 999, 6]]"""
          
    # 深拷贝
    l=[1,2,3,[4,5,6]]
    
    from copy import copy
    from copy import deepcopy
    
    l4=deepcopy(l1)
    l4[3][1]=999
    print(l4 is l1)
    print(l1)
    print(l4)      
    """
    False
    [1, 2, 3, [4, 5, 6]]
    [1, 2, 3, [4, 999, 6]]"""
    

    六、可变不可变

    可变不可变是在python中才有的个概念

    • 可变类型:

      • 字典(字典的key必须用不可变类型,可以hash)
      • 列表
      • 集合
    • 不可变类型:

      • 数字
      • 字符串
      • 元组

    字典底层原理

    python中参数传递都是copy一份传递过去,由于一切皆对象的,传过去的都是内存地址,python中区分可变与不可变类型,可变类型在函数中修改会影响原理的,而不可变则不会影响原来的。

    七、字符编码

    # 计算机的计量单位;
    bit比特位:0或者1的一个小格
    八个bit是一个byte,一个字节
    1024byte = 1KB
    1024KB = 1GB
    1024Gb = 1TB
    ...
    
    ascii码:一个字节有2的八次方种变化,可以表示所有的字符(数字,字母,标点符号)
    gbk:中国的编码方式,可以表示汉字,GBK是采用单双字节变长编码,英文使用单字节编码,完全兼容ASCII字符编码,中文部分采用双字节编码。
    计算机到了不同国家,不同国家有不同国家编码方式,就会出现乱码问题
    Unicode:统一各国的编码方式,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。
    

    utf-8/utf-16/utf-32

    八、闭包函数

    1. 定义在函数内部
    2. 对外部作用域有引用
    函数是一等公民:函数可以赋值给一个变量
    # 装饰器是闭包函数的典型应用
    # python中有装饰器语法糖  @
    
    def wrapper(func):
        def inner(*args,**kwargs):
            # 代码
            res=func(*args,**kwargs)
            # 代码
            return res
        return inner
    
    # def a():
    #     print("xxx")
       
    # 没有语法糖 
    # a=wrapper(a)
    # a()
    
    # 有语法糖
    # @wrapper()
    def a():
        print("xxx")
        
    # 面向切面编程 AOP
    # OOP 面向对象编程
    
    

    作业:

    作业一:

    前后端传数据三种编码格式,传json格式,原生django不能从POST中取出字典,用中间件或者装饰器前端不管传json还是其他格式,requests对象中有个data属性

    from django.utils.deprecation import MiddlewareMixin
    import json
    class DataMiddleware(MiddlewareMixin):
        def process_request(self, request):
            meta = request.META  # 请求信息
            print(meta.get('CONTENT_TYPE'))  # 通过请求信息获取数据的类型:application/json
            request.data = {}
            try:
                request.data = json.loads(request.body)
            except Exception as e:
                if request.POST:
                    request.data = request.POST.copy()
                    """
                    request.POST数据不可以,这里的赋值仅仅是指向了同一内存地址,
                    所以无法接下来修改操操作,因此要copy一份,生成新的内存地址"""
                if request.FILES:
                    for key in request.FILES:
                        request.data[key] =request.FILES.get(key)
            print('data:',request.data)
    

    作业二:

    申请github账号,维护一个博客(博客园,自己写的,hexo)

  • 相关阅读:
    复利软件单利及期望值的实现
    实验0 了解和熟悉操作系统
    关于《软件工程》的读后感
    评论
    一个完整的大作业
    数据结构化与保存
    爬取所有校园新闻
    用requests库和BeautifulSoup4库爬取新闻列表
    中文词频统计及词云制作
    组合数据类型练习,英文词频统计实例
  • 原文地址:https://www.cnblogs.com/cainiaoqianxun/p/13222255.html
Copyright © 2011-2022 走看看