python标准库学习6

简介:

使用 apply 函数

def  function(a, b):
     print  a, b
 
apply (function, ( "whither" , "canada?" ))
apply (function, ( 1 , 2  +  3 ))

  

whither canada?
 1 5

使用 apply 函数传递关键字参数

def  function(a, b):
     print  a, b
 
apply (function, ( "crunchy" , "frog" ))
apply (function, ( "crunchy" ,), { "b" : "frog" })
apply (function, (), { "a" : "crunchy" , "b" : "frog" })
 
crunchy frog
crunchy frog
crunchy frog

  

使用 apply 函数调用基类的构造函数

class  Rectangle:
     def  _ _init_ _( self , color = "white" , width = 10 , height = 10 ):
         print  "create a" , color, self , "sized" , width, "x" , height
 
class  RoundedRectangle(Rectangle):
     def  _ _init_ _( self , * * kw):
         apply (Rectangle._ _init_ _, ( self ,), kw)
 
rect =  Rectangle(color = "green" , height = 100 , width = 100 )
rect =  RoundedRectangle(color = "blue" , height = 20 )
 
create a green <Rectangle instance at 8c8260 > sized 100  x 100
create a blue <RoundedRectangle instance at 8c84c0 > sized 10  x 20

使用 _ _import_ _ 函数获得特定函数

def  getfunctionbyname(module_name, function_name):
     module =  _ _import_ _(module_name)
     return  getattr (module, function_name)
 
print  repr (getfunctionbyname( "dumbdbm" , "open" ))
 
<function open  at 794fa0 >

  

使用 _ _import_ _ 函数实现 延迟导入

class  LazyImport:
     def  _ _init_ _( self , module_name):
         self .module_name =  module_name
         self .module =  None
     def  _ _getattr_ _( self , name):
         if  self .module is  None :
             self .module =  _ _import_ _( self .module_name)
         return  getattr ( self .module, name)
 
string =  LazyImport( "string" )
 
print  string.lowercase
 
abcdefghijklmnopqrstuvwxyz

  

使用 dir 函数

def  dump(value):
     print  value, "=>" , dir (value)
 
import  sys
 
dump( 0 )
dump( 1.0 )
dump( 0.0j ) # complex number
dump([]) # list
dump({}) # dictionary
dump( "string" )
dump( len ) # function
dump(sys) # module
 
0  = > []
1.0  = > []
0j  = > [ 'conjugate' , 'imag' , 'real' ]
[] = > [ 'append' , 'count' , 'extend' , 'index' , 'insert' ,
     'pop' , 'remove' , 'reverse' , 'sort' ]
{} = > [ 'clear' , 'copy' , 'get' , 'has_key' , 'items' ,
     'keys' , 'update' , 'values' ]
string = > []
<built - in  function len > = > [ '_ _doc_ _' , '_ _name_ _' , '_ _self_ _' ]
<module 'sys'  (built - in )> = > [ '_ _doc_ _' , '_ _name_ _' ,
     '_ _stderr_ _' , '_ _stdin_ _' , '_ _stdout_ _' , 'argv' ,
     'builtin_module_names' , 'copyright' , 'dllhandle' ,
     'exc_info' , 'exc_type' , 'exec_prefix' , 'executable' ,
...

  

使用 dir 函数查找类的所有成员

class  A:
     def  a( self ):
         pass
     def  b( self ):
         pass
 
class  B(A):
     def  c( self ):
         pass
     def  d( self ):
         pass
 
def  getmembers(klass, members = None ):
     # get a list of all class members, ordered by class
     if  members is  None :
         members =  []
     for  k in  klass._ _bases_ _:
         getmembers(k, members)
     for  m in  dir (klass):
         if  m not  in  members:
             members.append(m)
     return  members
 
print  getmembers(A)
print  getmembers(B)
print  getmembers(IOError)
 
[ '_ _doc_ _' , '_ _module_ _' , 'a' , 'b' ]
[ '_ _doc_ _' , '_ _module_ _' , 'a' , 'b' , 'c' , 'd' ]
[ '_ _doc_ _' , '_ _getitem_ _' , '_ _init_ _' , '_ _module_ _' , '_ _str_ _' ]

  

使用 callable 函数

def  dump(function):
     if  callable (function):
         print  function, "is callable"
     else :
         print  function, "is *not* callable"
 
class  A:
     def  method( self , value):
         return  value
 
class  B(A):
     def  _ _call_ _( self , value):
         return  value
 
a =  A()
b =  B()
 
dump( 0 ) # simple objects
dump( "string" )
dump( callable )
dump(dump) # function
 
dump(A) # classes
dump(B)
dump(B.method)
 
dump(a) # instances
dump(b)
dump(b.method)
 
0  is  * not *  callable
string is  * not *  callable
<built - in  function callable > is  callable
<function dump at 8ca320 > is  callable
A is  callable
B is  callable
<unbound method A.method> is  callable
<A instance at 8caa10 > is  * not *  callable
<B instance at 8cab00 > is  callable
<method A.method of B instance at 8cab00 > is  callable

  

使用 eval 函数

def  dump(expression):
     result =  eval (expression)
     print  expression, "=>" , result, type (result)
 
dump( "1" )
dump( "1.0" )
dump( "'string'" )
dump( "1.0 + 2.0" )
dump( "'*' * 10" )
dump( "len('world')" )
 
1  = > 1  < type  'int' >
1.0  = > 1.0  < type  'float' >
'string'  = > string < type  'string' >
1.0  +  2.0  = > 3.0  < type  'float' >
'*'  *  10  = > * * * * * * * * * *  < type  'string' >
len ( 'world' ) = > 5  < type  'int' >

  

使用 eval 函数执行任意命令

print  eval ( "_ _import_ _('os').getcwd()" )
print  eval ( "_ _import_ _('os').remove('file')" )
 
/ home / fredrik / librarybook
Traceback (innermost last):
  File  "builtin-eval-example-2" , line 2 , in  ?
  File  "<string>" , line 0 , in  ?
os.error: ( 2 , 'No such file or directory' )

  

使用 compile 函数检查语法

NAME =  "script.py"
 
BODY =  """
prnt 'owl-stretching time'
"""
 
try :
     compile (BODY, NAME, "exec" )
except  SyntaxError, v:
     print  "syntax error:" , v, "in" , NAME
 
# syntax error: invalid syntax in script.py

  

执行已编译的代码

  

BODY =  """
print 'the ant, an introduction'
"""
 
code =  compile (BODY, "<script>" , "exec" )
 
print  code
 
exec  code
 
<code object  ? at 8c6be0 , file  "<script>" , line 0 >
the ant, an introduction

  Python 还提供了 execfile 函数, 一个从文件加载代码, 编译代码, 执行代码的快捷方式.

使用 execfile 函数

execfile ( "hello.py" )
 
def  EXECFILE (filename, locals = None , globals = None ):
     exec  compile ( open (filename).read(), filename, "exec" ) in  locals , globals
 
EXECFILE ( "hello.py" )
 
hello again, and  welcome to the show
hello again, and  welcome to the show

  

显式地访问 _ _builtin_ _ 模块中的函数

def  open (filename, mode = "rb" ):
     import  _ _builtin_ _
     file  =  _ _builtin_ _. open (filename, mode)
     if  file .read( 5 ) not  in ( "GIF87" , "GIF89" ):
         raise  IOError, "not a GIF file"
     file .seek( 0 )
     return  file
 
fp =  open ( "samples/sample.gif" )
print  len (fp.read()), "bytes"
 
fp =  open ( "samples/sample.jpg" )
print  len (fp.read()), "bytes"
 
3565  bytes
Traceback (innermost last):
   File  "builtin-open-example-1.py" , line 12 , in  ?
   File  "builtin-open-example-1.py" , line 5 , in  open
IOError: not  a GIF file

  

使用 exceptions 模块

# python imports this module by itself, so the following
# line isn't really needed
# python 会自动导入该模块, 所以以下这行是不必要的
# import exceptions
 
class  HTTPError(Exception):
     # indicates an HTTP protocol error
     def  _ _init_ _( self , url, errcode, errmsg):
         self .url =  url
         self .errcode =  errcode
         self .errmsg =  errmsg
     def  _ _str_ _( self ):
         return  (
             "<HTTPError for %s: %s %s>"  %
             ( self .url, self .errcode, self .errmsg)
             )
 
try :
     raise  HTTPError( "http://www.python.org/foo" , 200 , "Not Found" )
except  HTTPError, error:
     print  "url" , "=>" , error.url
     print  "errcode" , "=>" , error.errcode
     print  "errmsg" , "=>" , error.errmsg
     raise  # reraise exception
 
url = > http: / / www.python.org / foo
errcode = > 200
errmsg = > Not Found
Traceback (innermost last):
   File  "exceptions-example-1" , line 16 , in  ?
HTTPError: <HTTPError for  http: / / www.python.org / foo: 200  Not Found>

  

使用 os 模块重命名和删除文件

import  os
import  string
 
def  replace( file , search_for, replace_with):
     # replace strings in a text file
 
     back =  os.path.splitext( file )[ 0 ] +  ".bak"
     temp =  os.path.splitext( file )[ 0 ] +  ".tmp"
 
     try :
         # remove old temp file, if any
         os.remove(temp)
     except  os.error:
         pass
 
     fi =  open ( file )
     fo =  open (temp, "w" )
 
     for  s in  fi.readlines():
         fo.write(string.replace(s, search_for, replace_with))
 
     fi.close()
     fo.close()
 
     try :
         # remove old backup file, if any
         os.remove(back)
     except  os.error:
         pass
 
     # rename original to backup...
     os.rename( file , back)
 
     # ...and temporary to original
     os.rename(temp, file )
 
#
# try it out!
 
file  =  "samples/sample.txt"
 
replace( file , "hello" , "tjena" )
replace( file , "tjena" , "hello" )

  

使用 os 列出目录下的文件

import  os
 
for  file  in  os.listdir( "samples" ):
     print  file
 
sample.au
sample.jpg
sample.wav
...

  getcwd 和 chdir 函数分别用于获得和改变当前工作目录

 使用 os 模块改变当前工作目录

import  os
 
# where are we?
cwd =  os.getcwd()
print  "1" , cwd
 
# go down
os.chdir( "samples" )
print  "2" , os.getcwd()
 
# go back up
os.chdir(os.pardir)
print  "3" , os.getcwd()
 
1  / ematter / librarybook
2  / ematter / librarybook / samples
3  / ematter / librarybook

  makedirs 和 removedirs 函数用于创建或删除目录层

使用 os 模块创建/删除多个目录级

import  os
 
os.makedirs( "test/multiple/levels" )
 
fp =  open ( "test/multiple/levels/file" , "w" )
fp.write( "inspector praline" )
fp.close()
 
# remove the file
os.remove( "test/multiple/levels/file" )
 
# and all empty directories above it
os.removedirs( "test/multiple/levels" )

  removedirs 函数会删除所给路径中最后一个目录下所有的空目录. 而 mkdir 和 rmdir 函数只能处理单个目录级

使用 os 模块创建/删除目录

import  os
 
os.mkdir( "test" )
os.rmdir( "test" )
 
os.rmdir( "samples" ) # this will fail
 
Traceback (innermost last):
   File  "os-example-7" , line 6 , in  ?
OSError: [Errno 41 ] Directory not  empty: 'samples'

  如果需要删除非空目录, 你可以使用 shutil 模块中的 rmtree 函数

>>> import  shutil
shutil.rmtree( "d:\\a" )

  复制文件目录(包括内部文件)

>>> shutil.copytree( "d:\\new" , "d:\\a" )

  复制文件操作:

shutil.copyfile( "d:\\new\\a.txt" , "d:\\a.txt" )

  目录或文件的移动操作

shutil.move( "d:\\new\\a.txt" , "d:\\" )

  

使用 os 模块获取文件属性

import  os
import  time
 
file  =  "samples/sample.jpg"
 
def  dump(st):
     mode, ino, dev, nlink, uid, gid, size, atime, mtime, ctime =  st
     print  "- size:" , size, "bytes"
     print  "- owner:" , uid, gid
     print  "- created:" , time.ctime(ctime)
     print  "- last accessed:" , time.ctime(atime)
     print  "- last modified:" , time.ctime(mtime)
     print  "- mode:" , oct (mode)
     print  "- inode/dev:" , ino, dev
 
#
# get stats for a filename
 
st =  os.stat( file )
 
print  "stat" , file
dump(st)
print
 
#
# get stats for an open file
 
fp =  open ( file )
 
st =  os.fstat(fp.fileno())
 
print  "fstat" , file
dump(st)
 
stat samples / sample.jpg
-  size: 4762  bytes
-  owner: 0  0
-  created: Tue Sep 07  22 : 45 : 58  1999
-  last accessed: Sun Sep 19  00 : 00 : 00  1999
-  last modified: Sun May 19  01 : 42 : 16  1996
-  mode: 0100666
-  inode / dev: 0  2
 
fstat samples / sample.jpg
-  size: 4762  bytes
-  owner: 0  0
-  created: Tue Sep 07  22 : 45 : 58  1999
-  last accessed: Sun Sep 19  00 : 00 : 00  1999
-  last modified: Sun May 19  01 : 42 : 16  1996
-  mode: 0100666
-  inode / dev: 0  0

  可以使用 chmod 和 utime 函数修改文件的权限模式和时间属性

使用 os 模块修改文件的权限和时间戳

import  os
import  stat, time
 
infile =  "samples/sample.jpg"
outfile =  "out.jpg"
 
# copy contents
fi =  open (infile, "rb" )
fo =  open (outfile, "wb" )
 
while  1 :
     s =  fi.read( 10000 )
     if  not  s:
         break
     fo.write(s)
 
fi.close()
fo.close()
 
# copy mode and timestamp
st =  os.stat(infile)
os.chmod(outfile, stat.S_IMODE(st[stat.ST_MODE]))
os.utime(outfile, (st[stat.ST_ATIME], st[stat.ST_MTIME]))
 
print  "original" , "=>"
print  "mode" , oct (stat.S_IMODE(st[stat.ST_MODE]))
print  "atime" , time.ctime(st[stat.ST_ATIME])
print  "mtime" , time.ctime(st[stat.ST_MTIME])
 
print  "copy" , "=>"
st =  os.stat(outfile)
print  "mode" , oct (stat.S_IMODE(st[stat.ST_MODE]))
print  "atime" , time.ctime(st[stat.ST_ATIME])
print  "mtime" , time.ctime(st[stat.ST_MTIME])
 
original = >
mode 0666
atime Thu Oct  14  15 : 15 : 50  1999
mtime Mon Nov 13  15 : 42 : 36  1995
copy = >
mode 0666
atime Thu Oct  14  15 : 15 : 50  1999
mtime Mon Nov 13  15 : 42 : 36  1995

  system 函数在当前进程下执行一个新命令, 并等待它完成

使用 os 执行操作系统命令

import  os
 
if  os.name = =  "nt" :
     command =  "dir"
else :
     command =  "ls -l"
 
os.system(command)
 
- rwxrw - r - -    1  effbot  effbot        76  Oct   9  14 : 17  README
- rwxrw - r - -    1  effbot  effbot      1727  Oct   7  19 : 00  SimpleAsyncHTTP.py
- rwxrw - r - -    1  effbot  effbot       314  Oct   7  20 : 29  aifc - example - 1.py
- rwxrw - r - -    1  effbot  effbot       259  Oct   7  20 : 38  anydbm - example - 1.py
...

  命令通过操作系统的标准 shell 执行, 并返回 shell 的退出状态. 需要注意的是在 Windows 下, shell 通常是 command.com , 它的推出状态总是 0.


exec 函数会使用新进程替换当前进程(或者说是"转到进程").

使用 os 模块启动新进程

import  os
import  sys
 
program =  "python"
arguments =  [ "hello.py" ]
 
print  os.execvp(program, (program,) +   tuple (arguments))
print  "goodbye"
 
hello again, and  welcome to the show

  execvp 函数, 它会从标准路径搜索执行程序, 把第二个参数(元组)作为单独的参数传递给程序, 并使用当前的环境变量来运行程序. 其他七个同类型函数请参阅 Python Library Reference .

在 Unix 环境下, 你可以通过组合使用 exec , fork 以及 wait 函数来从当前程序调用另一个程序,fork 函数复制当前进程, wait 函数会等待一个子进程执行结束.

 使用 os 模块调用其他程序 (Unix)

import  os
import  sys
 
def  run(program, * args):
     pid =  os.fork()
     if  not  pid:
         os.execvp(program, (program,) +   args)
     return  os.wait()[ 0 ]
 
run( "python" , "hello.py" )
 
print  "goodbye"
 
hello again, and  welcome to the show
goodbye

  

fork 函数在子进程返回中返回 0 (这个进程首先从 fork 返回值), 在父进程中返回一个非 0 的进程标识符(子进程的 PID ). 也就是说, 只有当我们处于子进程的时候 "not pid" 才为真.

fork 和 wait 函数在 Windows 上是不可用的, 但是你可以使用 spawn 函数不过, spawn 不会沿着路径搜索可执行文件, 你必须自己处理好这些.

或许系统当前的“PATH”变量的值

>>> import  string
>>> import  os
>>> for  path in  string.split(os.environ[ "PATH" ],os.pathsep):
     print  path
 
     
C:\Program Files\NVIDIA Corporation\PhysX\Common
d:\program files\Python27\Lib\site - packages\PyQt4
C:\windows\system32
C:\windows
C:\windows\System32\Wbem
C:\windows\System32\WindowsPowerShell\v1. 0 \
C:\Program Files\Common Files\Thunder Network\KanKan\Codecs
D:\Program Files\python
D:\Program Files\Java\jdk1. 6.0_23 / bin
D:\Program Files\Java\jdk1. 6.0_23 / jre / bin
C:\Program Files\Microsoft SQL Server\ 90 \Tools\binn\
D:\vs2010 - qt - src - 4.7 . 4 \qt - src - 4.7 . 4 \ bin
C:\Program Files\Intel\WiFi\ bin \
C:\Program Files\Common Files\Intel\WirelessCommon\
C:\Program Files\Lenovo\Bluetooth Software\
D:\vs2010 - qt - src - 4.7 . 4 \qt - src - 4.7 . 4 \ bin
D:\vs2010 - qt - src - 4.7 . 4 \qt - src - 4.7 . 4 \lib
D:\vs2010 - qt - src - 4.7 . 4 \qt - src - 4.7 . 4 \include
D:\Qt\ 4.7 . 4 \ bin
>>>

  

使用 os 模块调用其他程序 (Windows)

import  os
import  string
 
def  run(program, * args):
     # find executable
     for  path in  string.split(os.environ[ "PATH" ], os.pathsep):
         file  =  os.path.join(path, program) +  ".exe"
         try :
             return  os.spawnv(os.P_WAIT, file , ( file ,) +  args)
         except  os.error:
             pass
     raise  os.error, "cannot find executable"
 
run( "python" , "hello.py" )
 
print  "goodbye"
 
hello again, and  welcome to the show
goodbye

  spawn 函数还可用于在后台运行一个程序.下面这个例子给 run 函数添加了一个可选的 mode 参数; 当设置为 os.P_NOWAIT 时, 这个脚本不会等待子程序结束, 默认值 os.P_WAIT 时 spawn 会等待子进程结束.

其它的标志常量还有 os.P_OVERLAY ,它使得 spawn 的行为和 exec 类似, 以及 os.P_DETACH , 它在后台运行子进程, 与当前控制台和键盘焦点隔离.

import  os
import  string
 
def  run(program, * args, * * kw):
     # find executable
     mode =  kw.get( "mode" , os.P_WAIT)
     for  path in  string.split(os.environ[ "PATH" ], os.pathsep):
         file  =  os.path.join(path, program) +  ".exe"
         try :
             return  os.spawnv(mode, file , ( file ,) +  args)
         except  os.error:
             pass
     raise  os.error, "cannot find executable"
 
run( "python" , "hello.py" , mode = os.P_NOWAIT)
print  "goodbye"
 
goodbye
hello again, and  welcome to the show

  下面这个例子提供了一个在 Unix 和 Windows 平台上通用的 spawn 方法

使用 spawn 或 fork/exec 调用其他程序

import  os
import  string
 
if  os.name in  ( "nt" , "dos" ):
     exefile =  ".exe"
else :
     exefile =  ""
 
def  spawn(program, * args):
     try :
         # possible 2.0 shortcut!
         return  os.spawnvp(program, (program,) +  args)
     except  AttributeError:
         pass
     try :
         spawnv =  os.spawnv
     except  AttributeError:
 
         # assume it's unix
         pid =  os.fork()
         if  not  pid:
             os.execvp(program, (program,) +  args)
         return  os.wait()[ 0 ]
     else :
         # got spawnv but no spawnp: go look for an executable
         for  path in  string.split(os.environ[ "PATH" ], os.pathsep):
             file  =  os.path.join(path, program) +  exefile
             try :
                 return  spawnv(os.P_WAIT, file , ( file ,) +  args)
             except  os.error:
                 pass
         raise  IOError, "cannot find executable"
 
#
# try it out!
 
spawn( "python" , "hello.py" )
 
print  "goodbye"
 
hello again, and  welcome to the show
goodbye

  

处理守护进程

Unix 系统中, 你可以使用 fork 函数把当前进程转入后台(一个"守护者/daemon"). 一般来说, 你需要派生(fork off)一个当前进程的副本, 然后终止原进程

使用 os 模块使脚本作为守护执行 (Unix)

import  os
import  time
 
pid =  os.fork()
if  pid:
     os._exit( 0 ) # kill original
 
print  "daemon started"
time.sleep( 10 )
print  "daemon terminated"

  

使用 os 模块终止当前进程

import os
import sys
 
try:
    sys.exit(1)
except SystemExit, value:
    print "caught exit(%s)" % value
 
try:
    os._exit(2)
except SystemExit, value:
    print "caught exit(%s)" % value
 
print "bye!"
 
caught exit(1)
本文转自被遗忘的博客园博客,原文链接:http://www.cnblogs.com/rollenholt/archive/2011/11/26/2264597.html,如需转载请自行联系原作者
相关文章
|
26天前
|
XML JSON 数据库
Python的标准库
Python的标准库
165 77
|
22天前
|
Python 容器
Python学习的自我理解和想法(9)
这是我在B站跟随千锋教育学习Python的第9天,主要学习了赋值、浅拷贝和深拷贝的概念及其底层逻辑。由于开学时间紧张,内容较为简略,但希望能帮助理解这些重要概念。赋值是创建引用,浅拷贝创建新容器但元素仍引用原对象,深拷贝则创建完全独立的新对象。希望对大家有所帮助,欢迎讨论。
|
4天前
|
数据可视化 数据挖掘 大数据
1.1 学习Python操作Excel的必要性
学习Python操作Excel在当今数据驱动的商业环境中至关重要。Python能处理大规模数据集,突破Excel行数限制;提供丰富的库实现复杂数据分析和自动化任务,显著提高效率。掌握这项技能不仅能提升个人能力,还能为企业带来价值,减少人为错误,提高决策效率。推荐从基础语法、Excel操作库开始学习,逐步进阶到数据可视化和自动化报表系统。通过实际项目巩固知识,关注新技术,为职业发展奠定坚实基础。
|
13天前
|
Python
Python学习的自我理解和想法(10)
这是我在千锋教育B站课程学习Python的第10天笔记,主要学习了函数的相关知识。内容包括函数的定义、组成、命名、参数分类(必须参数、关键字参数、默认参数、不定长参数)及调用注意事项。由于开学时间有限,记录较为简略,望谅解。通过学习,我理解了函数可以封装常用功能,简化代码并便于维护。若有不当之处,欢迎指正。
|
24天前
|
存储 索引 Python
Python学习的自我理解和想法(6)
这是我在B站千锋教育学习Python的第6天笔记,主要学习了字典的使用方法,包括字典的基本概念、访问、修改、添加、删除元素,以及获取字典信息、遍历字典和合并字典等内容。开学后时间有限,内容较为简略,敬请谅解。
|
28天前
|
存储 程序员 Python
Python学习的自我理解和想法(2)
今日学习Python第二天,重点掌握字符串操作。内容涵盖字符串介绍、切片、长度统计、子串计数、大小写转换及查找位置等。通过B站黑马程序员课程跟随老师实践,非原创代码,旨在巩固基础知识与技能。
|
27天前
|
程序员 Python
Python学习的自我理解和想法(3)
这是学习Python第三天的内容总结,主要围绕字符串操作展开,包括字符串的提取、分割、合并、替换、判断、编码及格式化输出等,通过B站黑马程序员课程跟随老师实践,非原创代码。
|
27天前
|
XML JSON 数据库
Python的标准库
Python的标准库
48 11
|
2月前
|
人工智能 API 开发工具
aisuite:吴恩达发布开源Python库,一个接口调用多个大模型
吴恩达发布的开源Python库aisuite,提供了一个统一的接口来调用多个大型语言模型(LLM)服务。支持包括OpenAI、Anthropic、Azure等在内的11个模型平台,简化了多模型管理和测试的工作,促进了人工智能技术的应用和发展。
135 1
aisuite:吴恩达发布开源Python库,一个接口调用多个大模型
|
24天前
|
Python
Python学习的自我理解和想法(7)
学的是b站的课程(千锋教育),跟老师写程序,不是自创的代码! 今天是学Python的第七天,学的内容是集合。开学了,时间不多,写得不多,见谅。