百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

Python学习思考:模块

bigegpt 2024-09-09 01:21 47 浏览

Python基础语法学习了,该学习什么

Python语法基础知识中我们学习了

print("hello world")

从这个入门的例子中出了

  • 什么是函数,怎么定义函数,如何调用函数
  • 什么是Python字符串
  • 什么是变量,如何定义赋值使用变量
  • 什么常见的变量类型:str int boolean list tuple set
  • 如何重复执行一段代码 for while
  • 什么是代码码 :python中的缩进来表示代码块
  • 什么是全局变量globals locals局部变量
  • 什么是异常、如何怎么异常 try except

学习这些后,似乎还是不能解决实际问题

接着我们联系日常的工作

关于文件处理,于是写了

  • 如何查找目录下的文件相关文章
  • 查找文件后如何处理呢?
  • 文件操作有哪些方式?如何复制一个文件到 另一个目录下

有朋友可能会说了,平常我们都是用鼠标复制粘贴的,写程序做这个不是有点多余了吗?

愉恰相反,很多香香的操作你难道都需要手工去执行么,,计算机程序的目的就是帮助人们解决重复通知的大量操作。

搓下来讲解由上面引出的一个很重要的知识点,模块

Python 模块(Module),是 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句。

  • 模块让你能够有逻辑地组织你的 Python 代码段。
  • 把相关的代码分配到一个模块里能让你的代码更好用,更易懂。
  • 模块能定义函数,类和变量,模块里也能包含可执行的代码。
# Fibonacci numbers module

def fib(n):    # write Fibonacci series up to n
    a, b = 0, 1
    while a < n:
        print(a, end=' ')
        a, b = b, a+b
    print()

def fib2(n):   # return Fibonacci series up to n
    result = []
    a, b = 0, 1
    while a < n:
        result.append(a)
        a, b = b, a+b
    return result

上面 的代码我们保存在一个 fibo.py 文件中

如何使用fibo.py文件中的函数呢?

import fibo
所谓的模块其实就是.py文件名

fibo.fib(1000)
0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987
fibo.fib2(100)
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
fibo.__name__
'fibo'

关于调用 其实就是模块名.函数名

当然引入模块也可以使用

from fibo import *
fib(500)

或者 按需要引入

from fibo import fib, fib2
fib(500)

引入模块后可以给模块取个别名 import fibo as fib

顺带学习一下英文语法

as可以用作介词、副词和连词。

I. as 作介词,意思是 “作为”,“以…身份”,“如同”
1) Alfred worked as a dustman for the Ellesmere Corporation. 阿尔弗雷德在Ellesmere公司当清洁工。
2) People who work in offices are frequently referred to as “white-collar” workers. 坐办公室的人常常被称作”白领工人”。

II. as作连词的用法
1. as…as, 意为 ”和…一样”, 用于形容词或副词的比较,as + adj/adv + as…, 第一个as为副词,第二个as为连词。
1) In 1991, there were twice as many detached houses as semi-detached. 1991年独立式住宅房的数量是半独立住宅房的两倍。
2) The App. is not as useful as we expected. 那个App不像我们期待的那么有用。
3) The girls performed as well in geography as the boys in 2010. 2010年女孩在地理课的考试成绩和男孩一样好。
4) He will be earning only half as much as he used to. 他将来挣的钱只有他现在的一半。

2. 引导时间状语从句,“随着”, “当…时”,和when, while用法相同,但它们有区别:用when时,从句的动作可以与主句的动作同时发生,也可以先于主句的动作发生;用while时,从句的动作为一过程,主句动作与从句动作同时进行或在从句动作过程中发生;用as时,主句和从句的动作同时发生,具有延续的含义.例如:
1) When she was young, she lived with her grandparents. 她小时候和祖父母住在一起。
2) I was preparing our dinner while you were sleeping. 你睡觉的时候我在准备晚餐。
3) You will grow wiser as you grow older. 随着年龄增长你会变的越来越聪明。

3. 引导原因状语从句,“由于”, “因为”, 和because, since用法相同,但他们有区别:because表示的语气最强;as一般放在句首,语气较弱,较口语化;since常常用在书面语中,表示多为对方已知的、或稍加分析便可得知的原因,有时可译作"既然".例如:
1) As there were not enough lifeboats for everybody, 1500 lives were lost. 由于没有足够的救生艇运载所有乘客,结果1500人丧生。
2) Since you are so sure of it he’ll believe you.既然你对此如此有把握,他会相信你的

4. 引导让步状语从句,”尽管”, “虽然”, 句子结构稍有不同,例如:
1) Old as he is, he still jogs every day. 他尽管上了年纪,仍然每天慢跑。
2) Strange as it may seem, nobody was injured in the accident. 这次意外虽然显得令人不可思议,却没人受伤。
3)Hard as he worked, he still failed to make both ends meet. 他尽管努力工作,仍未能做到收支平衡。

III. as作关系代词,引导定语从句

1. as引导定语从句与其他词连用
  ①  用于the same...as结构中
This is the same book as I read last week.这本书和我上周读的那本是一样的.
  ②  用于such...as结构中
I don”t like such books as he recommends.我不喜欢他推荐的那些书.
  ③  用于"so +adj. + a/an + n. (单数) + as "结构中
I am not so strong a man as I was.我已经没有从前那么强壮了.
2. as单独引导定语从句,as单独引导定语从句时,先行词可以是一个词,也可以是一个句子或短语.例如:
1) She is late, as is often the case.她迟到了,这是经常的事。(修饰的是整个主句)
2) To shut your eyes to facts, as many of you do, is foolish.对事实视而不见--你们好多人都是如此的愚蠢。(先行词是不定式短语)

3) As you know, I like music.
import fibo as fib
>>> fib.fib(500)
0 1 1 2 3 5 8 13 21 34 55 89 144 233 377

甚至可以给函数取个别名,如下

from fibo import fib as fibonacci
>>> fibonacci(500)
0 1 1 2 3 5 8 13 21 34 55 89 144 233 377

文件操作中我们已经使用过os模块了

if __name__ == "__main__":
    import sys
    fib(int(sys.argv[1]))

import一定要在文件最开始使用么?其实未必,在你需要的时候去import

模块肯定是存在的文件,那么Python会从哪里找这个文件

  • 当前脚本所有目录
  • PYTHONPATH 环境变量
  • 依赖包的安装目录,通常是python环境下的site-packages目录中

python自带的标准模块os模块对应 的是一个叫os.py的文件


r"""OS routines for NT or Posix depending on what system we're on.

This exports:
  - all functions from posix or nt, e.g. unlink, stat, etc.
  - os.path is either posixpath or ntpath
  - os.name is either 'posix' or 'nt'
  - os.curdir is a string representing the current directory (always '.')
  - os.pardir is a string representing the parent directory (always '..')
  - os.sep is the (or a most common) pathname separator ('/' or '\\')
  - os.extsep is the extension separator (always '.')
  - os.altsep is the alternate pathname separator (None or '/')
  - os.pathsep is the component separator used in $PATH etc
  - os.linesep is the line separator in text files ('\r' or '\n' or '\r\n')
  - os.defpath is the default search path for executables
  - os.devnull is the file path of the null device ('/dev/null', etc.)

Programs that import and use 'os' stand a better chance of being
portable between different platforms.  Of course, they must then
only use functions that are defined by all platforms (e.g., unlink
and opendir), and leave all pathname manipulation to os.path
(e.g., split and join).
"""

#'
import abc
import sys
import stat as st
def listdir(*args, **kwargs): # real signature unknown
   
    pass

当你看到import xxx时,一定要有文件与这对应。所以经常看到找不module的错误也就是提示你缺少包或者引入错误了。

为什么我们可以直接使用 range ,len list set

是因为python启动后,自动 在内存中加载了这些元素。

import builtins
>>> dir(builtins)  
['ArithmeticError', 'AssertionError', 'AttributeError', 'BaseException',
 'BlockingIOError', 'BrokenPipeError', 'BufferError', 'BytesWarning',
 'ChildProcessError', 'ConnectionAbortedError', 'ConnectionError',
 'ConnectionRefusedError', 'ConnectionResetError', 'DeprecationWarning',
 'EOFError', 'Ellipsis', 'EnvironmentError', 'Exception', 'False',
 'FileExistsError', 'FileNotFoundError', 'FloatingPointError',
 'FutureWarning', 'GeneratorExit', 'IOError', 'ImportError',
 'ImportWarning', 'IndentationError', 'IndexError', 'InterruptedError',
 'IsADirectoryError', 'KeyError', 'KeyboardInterrupt', 'LookupError',
 'MemoryError', 'NameError', 'None', 'NotADirectoryError', 'NotImplemented',
 'NotImplementedError', 'OSError', 'OverflowError',
 'PendingDeprecationWarning', 'PermissionError', 'ProcessLookupError',
 'ReferenceError', 'ResourceWarning', 'RuntimeError', 'RuntimeWarning',
 'StopIteration', 'SyntaxError', 'SyntaxWarning', 'SystemError',
 'SystemExit', 'TabError', 'TimeoutError', 'True', 'TypeError',
 'UnboundLocalError', 'UnicodeDecodeError', 'UnicodeEncodeError',
 'UnicodeError', 'UnicodeTranslateError', 'UnicodeWarning', 'UserWarning',
 'ValueError', 'Warning', 'ZeroDivisionError', '_', '__build_class__',
 '__debug__', '__doc__', '__import__', '__name__', '__package__', 'abs',
 'all', 'any', 'ascii', 'bin', 'bool', 'bytearray', 'bytes', 'callable',
 'chr', 'classmethod', 'compile', 'complex', 'copyright', 'credits',
 'delattr', 'dict', 'dir', 'divmod', 'enumerate', 'eval', 'exec', 'exit',
 'filter', 'float', 'format', 'frozenset', 'getattr', 'globals', 'hasattr',
 'hash', 'help', 'hex', 'id', 'input', 'int', 'isinstance', 'issubclass',
 'iter', 'len', 'license', 'list', 'locals', 'map', 'max', 'memoryview',
 'min', 'next', 'object', 'oct', 'open', 'ord', 'pow', 'print', 'property',
 'quit', 'range', 'repr', 'reversed', 'round', 'set', 'setattr', 'slice',
 'sorted', 'staticmethod', 'str', 'sum', 'super', 'tuple', 'type', 'vars',
 'zip']

剩下一个package的问题

这个稍微复杂一点,会专门写文章解释。

相关推荐

Java 泛型大揭秘:类型参数、通配符与最佳实践

引言在编程世界中,代码的可重用性和可维护性是至关重要的。为了实现这些目标,Java5引入了一种名为泛型(Generics)的强大功能。本文将详细介绍Java泛型的概念、优势和局限性,以及如何在...

K8s 的标签与选择器:流畅运维的秘诀

在Kubernetes的世界里,**标签(Label)和选择器(Selector)**并不是最炫酷的技术,但却是贯穿整个集群管理与运维流程的核心机制。正是它们让复杂的资源调度、查询、自动化运维变得...

哈希Hash算法:原理、应用(哈希算法 知乎)

原作者:Linux教程,原文地址:「链接」什么是哈希算法?哈希算法(HashAlgorithm),又称为散列算法或杂凑算法,是一种将任意长度的数据输入转换为固定长度输出值的数学函数。其输出结果通常被...

C#学习:基于LLM的简历评估程序(c# 简历)

前言在pocketflow的例子中看到了一个基于LLM的简历评估程序的例子,感觉还挺好玩的,为了练习一下C#,我最近使用C#重写了一个。准备不同的简历:image-20250528183949844查...

55顺位,砍41+14+3!季后赛也成得分王,难道他也是一名球星?

雷霆队最不可思议的新星:一个55号秀的疯狂逆袭!你是不是也觉得NBA最底层的55号秀,就只能当饮水机管理员?今年的55号秀阿龙·威金斯恐怕要打破你的认知了!常规赛阶段,这位二轮秀就像开了窍的天才,直接...

5分钟读懂C#字典对象(c# 字典获取值)

什么是字典对象在C#中,使用Dictionary类来管理由键值对组成的集合,这类集合被称为字典。字典最大的特点就是能够根据键来快速查找集合中的值,其键的定义不能重复,具有唯一性,相当于数组索引值,字典...

c#窗体传值(c# 跨窗体传递数据)

在WinForm编程中我们经常需要进行俩个窗体间的传值。下面我给出了两种方法,来实现传值一、在输入数据的界面中定义一个属性,供接受数据的窗体使用1、子窗体usingSystem;usingSyst...

C#入门篇章—委托(c#委托的理解)

C#委托1.委托的定义和使用委托的作用:如果要把方法作为函数来进行传递的话,就要用到委托。委托是一个类型,这个类型可以赋值一个方法的引用。C#的委托通过delegate关键字来声明。声明委托的...

C#.NET in、out、ref详解(c#.net framework)

简介在C#中,in、ref和out是用于修改方法参数传递方式的关键字,它们决定了参数是按值传递还是按引用传递,以及参数是否必须在传递前初始化。基本语义对比修饰符传递方式可读写性必须初始化调用...

C#广义表(广义表headtail)

在C#中,广义表(GeneralizedList)是一种特殊的数据结构,它是线性表的推广。广义表可以包含单个元素(称为原子),也可以包含另一个广义表(称为子表)。以下是一个简单的C#广义表示例代...

「C#.NET 拾遗补漏」04:你必须知道的反射

阅读本文大概需要3分钟。通常,反射用于动态获取对象的类型、属性和方法等信息。今天带你玩转反射,来汇总一下反射的各种常见操作,捡漏看看有没有你不知道的。获取类型的成员Type类的GetMembe...

C#启动外部程序的问题(c#怎么启动)

IT&OT的深度融合是智能制造的基石。本公众号将聚焦于PLC编程与上位机开发。除理论知识外,也会结合我们团队在开发过程中遇到的具体问题介绍一些项目经验。在使用C#开发上位机时,有时会需要启动外部的一些...

全网最狠C#面试拷问:这20道题没答出来,别说你懂.NET!

在竞争激烈的C#开发岗位求职过程中,面试是必经的一道关卡。而一场高质量的面试,不仅能筛选出真正掌握C#和.NET技术精髓的人才,也能让求职者对自身技术水平有更清晰的认知。今天,就为大家精心准备了20道...

C#匿名方法(c#匿名方法与匿名类)

C#中的匿名方法是一种没有名称只有主体的方法,它提供了一种传递代码块作为委托参数的技术。以下是关于C#匿名方法的一些重要特点和用法:特点省略参数列表:使用匿名方法可省略参数列表,这意味着匿名方法...

C# Windows窗体(.Net Framework)知识总结

Windows窗体可大致分为Form窗体和MDI窗体,Form窗体没什么好细说的,知识点总结都在思维导图里面了,下文将围绕MDI窗体来讲述。MDI(MultipleDocumentInterfac...