Python进阶

import 与 from...import

在 python 用 import 或者 from...import 来导入相应的模块。

将整个模块(somemodule)导入,格式为: import somemodule

从某个模块中导入某个函数,格式为: from somemodule import somefunction

从某个模块中导入多个函数,格式为: from somemodule import firstfunc, secondfunc, thirdfunc

将某个模块中的全部函数导入,格式为: from somemodule import *

__name__属性

一个模块被另一个程序第一次引入时,其主程序将运行。如果我们想在模块被引入时,模块中的某一程序块不执行,我们可以用name属性来使该程序块仅在该模块自身运行时执行。

#!/usr/bin/python3
# Filename: using_name.py

if __name__ == '__main__':
  print('程序自身在运行')
else:
  print('我来自另一模块')

dir() 函数

内置的函数 dir() 可以找到模块内定义的所有名称(函数和变量)。以一个字符串列表的形式返回

推导式

Python 推导式是一种独特的数据处理方式,可以从一个数据序列构建另一个新的数据序列的结构体。

Python 推导式是一种强大且简洁的语法,适用于生成列表、字典、集合和生成器。

在使用推导式时,需要注意可读性,尽量保持表达式简洁,以免影响代码的可读性和可维护性。

Python 支持各种数据结构的推导式:

  • 列表(list)推导式: [表达式 for 变量 in 列表 if 条件]

    • names = ['Bob','Tom','alice','Jerry','Wendy','Smith']
      new_names = [name.upper() for name in names if len(name)>3]
      print(new_names)
      ['ALICE', 'JERRY', 'WENDY', 'SMITH']
  • 字典(dict)推导式: { key_expr: value_expr for value in collection if condition }

    • listdemo = ['Google','Runoob', 'Taobao']
      # 将列表中各字符串值为键,各字符串的长度为值,组成键值对
      >>> newdict = {key:len(key) for key in listdemo}
      >>> newdict
      {'Google': 6, 'Runoob': 6, 'Taobao': 6}
  • 集合(set)推导式: 同列表

  • 元组(tuple)推导式: 元组推导式和列表推导式的用法也完全相同,只是元组推导式是用 () 圆括号将各部分括起来,而列表推导式用的是中括号 [],另外元组推导式返回的结果是一个生成器对象。

函数

定义函数

def sum(p1,p2):
   return p1*p2

调用函数时可使用的正式参数类型

  • 必需参数

    • 必需参数须以正确的顺序和数量传入函数。

  • 关键字参数

    • 函数调用使用关键字参数来确定传入的参数值。使用关键字参数允许函数调用时参数的顺序与声明时不一致

    • def user(name,age):
         print(f'姓名:{name},年龄:{age}')
      user(age=18,name='tom')
  • 默认参数

    • 调用函数时,如果没有传递参数,则会使用默认参数

    • def user(name,age,gender='male'):
         print(f'姓名:{name},年龄:{age},性别:{gender}')
      user('tom',15)
  • 不定长参数

    • 加了一个星号 * 的参数会以元组(tuple)的形式导入,存放所有未命名的变量参数

    • 加了两个星号 ** 的参数会以字典的形式导入

    • 星号 * 作为参数单独出现时,星号 * 后的参数必须用关键字传入

匿名函数lambda

所谓匿名,意即不再使用 def 语句这样标准的形式定义一个函数。

  • lambda 只是一个表达式,函数体比 def 简单很多。

  • lambda 的主体是一个表达式,而不是一个代码块。仅仅能在 lambda 表达式中封装有限的逻辑进去。

  • lambda 函数拥有自己的命名空间,且不能访问自己参数列表之外或全局命名空间里的参数。

lambda 语法格式:

lambda arguments: expression
  • lambda是 Python 的关键字,用于定义 lambda 函数。

  • arguments 是参数列表,可以包含零个或多个参数,但必须在冒号(:)前指定。

  • expression 是一个表达式,用于计算并返回函数的结果。

sum = lambda arg1, arg2: arg1 + arg2
print ("相加后的值为 : ", sum( 10, 20 ))
 

文件读写

  • open(filename,mode),打开文件后需要关闭 f.close()

    • filename:文件名

    • mode:r 读,w 写,r+/w+ 读写,a/a+ 读写的追加模式

  • with open(filename,mode) as f,自动关闭文件

面向对象

  • 构造方法 __init__()

def __init__(self):
   self.data = []
  • self,表示类的实例,类似于Java的this,类的方法必须有一个额外的第一个参数名称是 self

  • 继承

class DerivedClassName(BaseClassName):
  • 调用父类方法:super().methodName() 或者 BaseClass().methodName()

  • 私有属性方法:属性、方法名用两个下划线开头__private_attrs、__private_method

  • 变量作用域

    • 在内部作用域修改外部作用域的变量时,用global

    num = 1
    def fun1():
       global num  # 需要使用 global 关键字声明
       print(num)
       num = 123
       print(num)
    fun1()
    print(num)
    • 修改嵌套作用域(enclosing 作用域,外层非全局作用域)中的变量,用nonlocal

    def outer():
       num = 10
       def inner():
           nonlocal num   # nonlocal关键字声明
           num = 100
           print(num)
       inner()
       print(num)
    outer()

标准库

  • 操作系统接口 os

  • 执行脚本的命令行参数 sys.argv

  • 字符串正则 re

  • 数学 math

  • 随机数 random

  • 日期时间 datetime,time

json

dict中的key-value为单引号,json中的节点-值为双引号

json.dumps() 编码

json.loads() 解码

posted @   hjy1995  阅读(45)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
历史上的今天:
2020-05-10 Redis 键(key)
2020-05-10 Redis数据类型命令
2020-05-10 Redis 配置命令 CONFIG
2020-05-10 Redis简介
点击右上角即可分享
微信分享提示