首页 > 编程语言 >Python入门

Python入门

时间:2024-11-14 16:59:13浏览次数:1  
标签:返回 函数 name Python 列表 print 元组 入门

一、入门

1.1 注释

  1. 单行注释#

  2. 多行注释

    •   '''
        多行注释
        
        '''
      
    •   """
        多行注释
        """
      
  3. 指定文件的编码方式

    • 必须在第一行才有效# coding:gbk

1.2 格式化输出

  1. print中,使用%
    • print("姓名:%s, 年龄: %d, 成绩:%.2f" % (name, age, score))
      • 分别使用%s, %d, %.2f来占位
  2. print中,使用format
    • print("姓名:{}, 年龄: {}, 成绩:{:.2f}" .format (name, age, score))
      • 分别使用{}, {}, {:.2f}来占位
  3. print中,使用f
    • print(f"姓名:{name}, 年龄: {age}, 成绩:{score:.2f}")
    • 如果此时就想输出{}呢?print(f"姓名:{{name}}, 年龄: {age}, 成绩:{score:.2f}")

1.3 数据类型

  1. 整型

    • 整型可以表示很大的数,最大可由4300个数字组成的数字。
    • 进制
      • 十六进制:加前缀0x,0~9以及A~F(小写也一样的)
      • 八进制:加前缀0o,0~7
      • 二进制,加前缀0b,只能由01组成
      • 运行时,会自动转换为十进制输出。
    • 整型所占用的字节数,随着数字的增大而增大,每次的增量是4字节。(可以通过sys.getsizeof(a),获取字节数)
  2. 浮点数

    • 可以使用科学技术法表示5.12e2或者5.12E-2,e和E后面的就是指数。
    • 范围大约在e-308~e308,可以使用sys.sys.float_info.max sys.float_info.min查看
    • 浮点数计算之后,有精度损失,可以使用Decimal类进行精确计算。
  3. 布尔类型

    • 只有TrueFalse两种值。
    • 布尔类型可以和整型进行相加减,True就是1,False就是0.
    • 非0是True,0是False
  4. 字符串类型

    • 可以用单引号包裹,也可以用双引号包裹。

    • 没有字符类型(char),字符类型,也是字符串。

    • 使用数据原有格式输入时,用三个单引号,或者三个双引号包裹。

      •   str = """第一行
          第二行, 
          第三行,
          第四行
          第五行"""
        
    • 字符串前加r,整个字符串不会被转义

      •   path = r"C:\users\a.txt"
        
    • 字符串驻留机制

      • python只保存一份「相同且不可变的字符串」,说大白话就是,多个字符串,只要字面值一样,内存中只会存在一份。

      • 字符串的驻留机制是有条件的,比如只能长度短,只能由26个英文字母+数字+下划线组成,但是,现代的一些编译器进行优化了。对于那些不满足条件的,可以使用s2 = sys.intern(s1)强制同一个内存。

      • 整数也有相似的驻留机制

      • 字符串在编译时驻留,而非运行时。

        • 什么叫编译时?就是没运行的时候,就知道结果了,运行时就是要运行才知道结果。

        •   str1 = "hello world $ ¥ #"
            str2 = "hello world $ ¥ #"
            tmp1 = "hello world"
            tmp2 = " $ ¥ #"
            str3 =  tmp1 + tmp2 
            # str1 地址:4343076768, str2 地址:4343076768, str3 地址: 4343452160
            print("str1 地址:{}, str2 地址:{}, str3 地址: {}".format(id(str1), id(str2), id(str3)))
          
      • 例子

        str1 = "hello"
        str2 = "hello"
        str3 = "hello"
        # 通过id()来得到地址,下面的地址都是一样的
        print("str1 地址:{}, str2 地址:{}, str3 地址: {}".format(id(str1), id(str2), id(str3)))
        
  5. 数据类型转换

    • 转成整型int(x)
      • int(12.6)结果12
      • int("12.6")报错
    • 转成浮点型float(x)
    • 转成布尔类型bool(x)
    • 转成字符串str(x)

1.4 运算符

  1. 算数运算符

    • 除法/:两个int会得到一个float,

    • 取整除//:只返回整数部分,向下取整(-9 // 2结果是-5,取小的)。

    • x的y次幂x**y

  2. 比较运算符

    • >>=<<===,注意,10< a <= 20这种写法是可以的,

    • is:判断两个变量引用对象是否是同一个

    • is not:判断两个变量引用对象是否不相同

  3. 逻辑运算符

    • andx and y,如果x为False,则返回x的值,否则返回y的值(注意y可以是算术表达式)。

    • orx or y,如果x为True,则返回x的值,否则返回y的值

    • not!x,如果x为True,则返回False,否则返回True

  4. 赋值运算符

    • **=a **= b等效于a = a ** b
    • //=a //= b 等效于a = a // b
  5. 三目运算符

    • max = a if a > b else b
  6. 位运算

    • ~x:按位取反
    • <<:左移,符号位不变,用0补低位
    • >>:右移,符号位不变 ,用符号位来补高位
    • &:按位与
    • |:按位或
    • ^:按位异或

1.5 获得键盘输入

  1. a = input("请输入信息:"),从控制台获得的数据类型是字符串。

1.6 流程控制

  1. 条件分支

    if 条件一:
        语句...
    elif 条件二:
        语句...
    else:
        语句...
    
  2. for循环

    •   for 变量 in <列表/序列>:
            语句...
      
    • for和range搭配使用

      # 获得[start, stop),间隔是step
      for 变量 in range([start=0], stop, [step = 1]):
          语句...
      
    • for和else搭配使用

      # for没有被break打断时,就会进入else   
      for i in range(3):
          print(i)
      else:
          print("循环结束")
      
      
  3. while循环

    • while和else搭配使用
      count = 0
      while count < 3:
          print("计数:", count)
          count += 1
      else:   # 当循环是通过break结束时,会跳过else
          print("循环正常结束!")
      
      

1.7 函数

  1. 基本语法格式

    def myfunc([参数]) :
        语句...
        
       	return ... (可选)
    
  2. 默认参数

    def greet(name, message="Hello"):
        print(f"{message}, {name}!")
    
    greet("Alice")          # 输出: Hello, Alice!
    greet("Alice", "Hi")    # 输出: Hi, Alice!
    
  3. 可变参数

    def func(*args, **kwargs):
        print("位置参数:", args)
        print("关键字参数:", kwargs)
    
    func(1, 2, 3, a=4, b=5)
    # 输出:
    # 位置参数: (1, 2, 3)
    # 关键字参数: {'a': 4, 'b': 5}
    
    

    image-20241114112415267

    • args:允许传入任意数量的位置参数,函数将其当作一个元组处理。
    • kwargs:允许传入任意数量的关键字参数,函数将其当作一个字典处理。
  4. 调用函数时,可以指定参数

    def greet(name, age):
        print(f"Name: {name}, Age: {age}")
    
    greet(age=25, name="Alice")  # 结果: Name: Alice, Age: 25
    
  5. 返回值

    def add_subtract(x, y):
        return x + y, x - y
    
    result = add_subtract(5, 3)  # 返回 (8, 2)
    
    • 可以返回任意数量的值,多个返回值会以元组形式返回。
  6. 函数注释

    def add(x: int, y: int) -> int:
        return x + y
    
    • Python 支持在函数参数和返回值中使用类型提示,提高代码的可读性和可维护性,但不会对数据类型进行强制约束
  7. Lambda函数

    • 基本语法func = lambda [参数1], [参数2], [参数3]: 表达式,表达式的值会自动返回
    • 注意,只能有一个表达式,只能写一行,不能多行
  8. 高阶函数

    • 高阶函数是什么:指那些可以接收函数作为参数或者返回一个函数的函数。

    • map()

      # 基本语法 map(function, iterable, ...)
      numbers = [1, 2, 3, 4]
      squared_numbers = map(lambda x: x ** 2, numbers)
      print(list(squared_numbers))  # 输出:[1, 4, 9, 16]
      
      • map() 函数将一个函数应用于给定的可迭代对象(如列表、元组等)中的每个元素,并返回一个新的迭代器,包含函数应用后的结果。
    • filter()

      # 基本语法 filter(function, iterable)
      numbers = [1, 2, 3, 4, 5, 6]
      even_numbers = filter(lambda x: x % 2 == 0, numbers)
      print(list(even_numbers))  # 输出:[2, 4, 6]
      
      • filter() 函数用于过滤序列中的元素,根据函数返回的布尔值(TrueFalse)来筛选元素。
    • sorted()

      # 基本语法 sorted(iterable, key=None, reverse=False)
      words = ["banana", "apple", "cherry"]
      sorted_words = sorted(words, key=lambda x: len(x))     # 按照长度排序
      print(sorted_words)  # 输出:['apple', 'banana', 'cherry']
      
      • sorted() 函数接受一个可迭代对象,并根据指定的排序规则返回一个排序后的列表。你可以使用 key 参数来传递一个函数,来定义排序的依据。
  9. 函数装饰器

    • 可以在不修改原始函数代码的前提下,动态地增加或修改函数的功能。装饰器本质上是一个返回函数的函数

    •   # 这个装饰器有参数 
        def repeat_decorator(n):
            def decorator(func):  # 这个func就是下面的greet()函数
                # *args 和 **kwargs是传给下面的greet()函数的
                def wrapper(*args, **kwargs):
                    for _ in range(n):
                        func(*args, **kwargs)
                return wrapper
            return decorator
        
        
        # 传参给装饰器
        @repeat_decorator(3)
        def greet(name):
            print(f"Hello, {name}")
        
        greet("Alice")
      
  10. 函数到底是「值传递」还是「引用对象传递」?

    • 不是简单的「值传递」或者「引用对象传递」,如果参数是「可变对象」,则会影响实参,如果参数是「不可变对象」,那么则不会影响实参。
    • 不可变对象:整型、浮点数、字符串、元祖
    • 可变对象:列表、字典、集合、自定义类的实例

1.8 列表list

  1. 列表用[]表示,并且可以包含不同类型的元素。列表是有序的。
  2. 添加元素
    • 在末尾append(element)
    • 在指定位置insert(index, element)
  3. 删除元素
    • remove(element)删除列表中首次出现的指定值
    • pop(index)删除并返回指定位置的元素,若未提供索引,则删除最后一个元素
    • clear()清空整个列表
  4. 列表切片
    • 可以通过[start:stop:step]获得一个子列表[start,stop)
    • 反转列表[::-1]
  5. 列表常用方法
    • 排序:使用sort()原地排序,使用sorted()返回新排序的列表
    • 统计:使用len()获得列表长度,使用count()统计某个元素出现的次数
    • 合并:使用+操作符合并两个列表
  6. 列表推导式
    • 是一种简洁的生成列表的方式,可以通过一行代码来快速构建列表。
    • 基本语法[expression for item in iterable if condition]
      • expression 是每次循环的生成内容,生成的每个元素会被加入到列表中。
      • item是从iterable 中提取的元素。
      • if condition 是一个可选条件,只有满足条件的元素才会被添加到列表中。
  7. 与C++中的STL的vector类似。

1.9 元组tuple

  1. 元组(tuple)是一种不可变的有序数据结构,使用圆括号()定义。可以放不同类型的数据。

  2. 元组支持切片操作,可以返回一个子元组。

  3. 元组解包:元组可以直接拆包赋值给多个变量,例如函数多个返回值时。

    •   coordinates = (10, 20)
        x, y = coordinates
      
  4. 合并元组,用+

  5. 重复元组,用*tuple2 = tuple1 * 3

  6. 可以使用innot in来检查元素是否在元组中。

  7. count():统计某个值在元组中出现的次数。

  8. index():返回某个值在元组的索引位置

1.10 集合set

  1. 集合(set)是一种无序且不重复的元素集合,使用花括号{}set()函数创建。集合常用于去重、集合运算和成员检测等场景。
  2. 集合的特点:无序、不重复、可变性(可以添加删除)。
  3. 添加元素
    • add():添加但个元素
    • update():可以添加多个元素。参数是可迭代对象
  4. 删除元素
    • remove():删除指定元素,元素不存在时报错
    • discard():删除指定元素,元素不存在时不会报错
    • pop():随机删除并返回集合中的一个元素
  5. 可以使用innot in检测元素是否在集合中
  6. 集合运算
    • 交集:set1 & set2set1.intersection(set2)
    • 并集:set1 | set2set1.union(set2)
    • 差集:set1 - set2set1.difference(set2)
    • 对称差集:set1 ^ set2set1.symmetric_difference(set2),等同于set1 - set2set2 - set1的结果之和
  7. issubset():检查一个集合是否是另一个集合的子集
  8. issuperset():检查一个集合是否包含另一个集合

1.11 字典

  1. 字典(dict)是一种以键-值对(key-value)形式存储数据的容器。

  2. 创建方式

    •   my_dict = {"name": "Alice", "age": 25, "city": "New York"}
      
    •   # 使用关键字参数
        my_dict = dict(name="Alice", age=25, city="New York")
      
    •   # 使用序列创建
        my_dict = dict([("name", "Alice"), ("age", 25), ("city", "New York")])
      
  3. 字典的特点

    • 键的唯一性:字典中的键是唯一的,如果添加重复的键,后者会覆盖前者的值。
    • 无序性(Python 3.6之前):在Python 3.7之后,字典的键值对按插入顺序保持。
    • 可变性:字典可以在创建后进行修改,包括添加、更新和删除键值对。
  4. 字典的key必须是不可变类型。

  5. 访问

    • my_dict["name"]:键不存在会报错
    • my_dict.get("name", "xx"):不存在时放回默认值
  6. 添加和更新

    • my_dict["name"] = "ouyang"
  7. 删除

    • del my_dict["name"]:删除指定key
    • name = my_dict.pop("name", "xx"),删除指定键并返回对应值,如果不存在返回默认值
    • clear():清空字典
  8. 常用方法

    • keys():返回所有key
    • values():返回所有value
    • items():返回所有键值对
    • update():将另一个字典的键值对合并到当前字典中。
  9. 字典推导式

    • 基本语法{key_expr: value_expr for item in iterable if condition}
      • key_expr:生成字典中键的表达式。
      • value_expr:生成字典中值的表达式。
      • item:迭代过程中每个元素的变量名。
      • iterable:可迭代对象,例如列表、元组、字典或范围。
      • condition:可选条件表达式,如果满足条件则包含此键值对。

标签:返回,函数,name,Python,列表,print,元组,入门
From: https://www.cnblogs.com/ouyangxx/p/18546387

相关文章

  • CentOS7 重装yum和python
    卸载现有的Python和Yum1、删除现有Python#强制删除已安装程序及其关联rpm-qa|greppython|xargsrpm-ev--allmatches--nodeps#删除所有残余文件##xargs,允许你对输出执行其他某些命令whereispython|xargsrm-frv#验证删除,返回无结果whereispython2、删除现有的yum......
  • Python实现批量提取Word文档中的图片(支持.doc和.docx格式)
            在工作中,我们可能会遇到需要从多个Word文档中批量提取图片的需求。如果手动操作,效率低且容易出错。因此,利用Python自动化批量提取图片是一个不错的选择。本篇文章将详细介绍如何使用Python来实现从.doc和.docx格式的Word文档中批量提取图片并保存......
  • Postman接口测试从入门到精通(二)
    十一、Postman批量运行测试用例十二、Postman数据驱动之cSV文件和JSON文件的处理十三、测试必须带请求头的接口常见的请求头:Host请求的主机地址connection  连接方式Accept客户端接收到的数据格式×-Requestea-Wih异步请求 User-Agent  客户端的用户类型Reterer  ......
  • DL00337-基于yolov11的阿尔兹海默症检测诊断含数据集python
    阿尔兹海默症是一种渐进性的神经退行性疾病,通常通过认知障碍、记忆丧失、语言障碍等症状表现出来。早期诊断是控制疾病发展的关键,但现有的诊断方法如临床评估、神经影像检查(CT、MRI等)通常具有一定的局限性。YOLOv11能够帮助提取医学影像中的有价值特征,进而辅助阿尔兹海默症的诊......
  • Linux基础入门2
    建议先看一声明:学习视频来自B站UP主泷羽sec,如涉及侵权马上删除文章。本文只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负泷羽sec的个人空间-泷羽sec个人主页-哔哩哔哩视频微信公众号:泷羽sec文件系统权限Linux系统中一切都是文件1.查看权限ls......
  • 一文教你用黑客技术 aircrack-ng破解wifi密码!网络安全零基础入门必看教程
    前言这是小强给粉丝盆友们整理的网络安全渗透测试入门阶段无线安全渗透与防御教程喜欢的朋友们,记得给我点赞支持和收藏一下,关注我,学习黑客技术。1.Aircrack-ng简介Aircrack-NG是一个完整的工具来评估Wi-Fi网络安全套件。捕获:airodump-ng:用于捕获无线网络数据包;攻......
  • Docker快速入门到项目实战部署
    1.*docker*1.1*什么是docker*docker是快速构建、运行、管理应用的工具,简单来就是来帮助部署项目以及部署项目需要的一些组件的工具。1.2*卸载旧版*首先如果系统中已经存在旧的docker,则先卸载:yumremovedockerdocker-clientdocker-client-latestdocker-commondock......
  • 黑客技术渗透测试零基础入门教程—一文讲清什么是内网渗透!
    前言这是晓晓给粉丝盆友们整理的网络安全渗透测试入门阶段内网渗透与防御教程喜欢的朋友们,记得给我点赞支持和收藏一下,关注我,学习黑客技术。一.什么是内网渗透内网渗透是指攻击者已经进入了目标系统的内部网络,通过侧信道攻击、横向渗透等方式进一步控制系统,获取敏感信息......
  • 【Python学习笔记】 第9章 元组、文件和其他核心类型
    元组Python元组的属性:任意对象的有序集合通过偏移量存取属于“不可变序列”固定长度、多样性、任意嵌套对象引用的数组元组的常见方法:运算解释()空元组T=(0,)单个元素的元组T=(0,'Ni',1.2,3)四个元素的元组T=0,'Ni',1.2,3还是四个元......
  • Python可视化Matplotlib折线图plot用法详解
    importmatplotlib.pyplotaspltimportrandom,iofrompylabimportmplimportnumpyasnp#画出温度变化图#设置显示中文字体mpl.rcParams["font.sans-serif"]=["SimHei"]#设置正常显示符号mpl.rcParams["axes.unicode_minus"]=False# 准备x.y坐标......