【python零基础入门学习】python基础篇之文件对象open、模块以及函数的使用(三)_fboj

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

f.tell()
f.close()



#### 拷贝文件:




f1 = open(‘/bin/ls’, ‘rb’)

f2 = open(‘/tmp/list’, ‘wb’)

data = f1.read()

f2.write(data)

f1.close()

f2.close()

[root@room9pc01 tmp]# md5sum /bin/ls /tmp/list
a78c13d806e594dc4014d145d689f23d  /bin/ls
a78c13d806e594dc4014d145d689f23d  /tmp/list

src_fname = ‘/bin/ls’
dst_fname = ‘/tmp/list2’

src_fobj = open(src_fname, ‘rb’)
dst_fboj = open(dst_fname, ‘wb’)

#就像商品供货的例子

while 1:
    data = src_fobj.read(4096)
    if data == b’‘:
#if len(data) == 0:
#if not data : 空串(b’')为假,取反为真
        break
    else:
        dst_fboj.write(data)

src_fobj.close()
dst_fboj.close()



## 函数:


1. 使用def定义
2. 调用函数务必使用()
3. 函数一般都需要有一个返回值


* 返回值使用return关键字指定
* 没有return默认返回None


![](https://img-blog.csdnimg.cn/76cde03e8a5646d5b56df13cf8e77199.png)​




def add():
…     result = 10 + 20

a = add()
print(a)
None
------通过上面的例子可以知道,需要return返回值,不然只会默认输出None----

###########函数############
def mk_fib():
    fib = [0,1]  #函数内部的变量是局部变量,只能在函数内使用
    n = int(input('长度: '))

for i in range(n - 2):
        fib.append(fib[-1] + fib[-2])

return fib#返回的是fib代表的列表,而不是返回变量

a = mk_fib()#调用函数时,必须用(),调用函数就是执行函数的代码
print(a)
b = [i * 2 for i in a]
print(b)
with open(‘/tmp/fib.txt’, ‘w’) as fobj:
    # 需要把列表转成str字符串后再写入文件,否则报错
    fobj.write(str(a))
#############################



### 函数参数:


![](https://img-blog.csdnimg.cn/9f455c98dade42349c2ac35173360ea6.png)​


#### 传递参数:


![](https://img-blog.csdnimg.cn/ab3fcdf3be894e8b93d3bdcefe310a1f.png)​




def mk_fib(n):
    fib = [0,1]  #函数内部的变量是局部变量,只能在函数内使用

for i in range(n - 2):
        fib.append(fib[-1] + fib[-2])

return fib#返回的是fib代表的列表,而不是返回变量

a = mk_fib(5)#调用函数时,必须用(),调用函数就是执行函数的代码
print(a)
b = [i * 2 for i in a]
print(b)
with open(‘/tmp/fib.txt’, ‘w’) as fobj:
    # 需要把列表转成str字符串后再写入文件,否则报错
    fobj.write(str(a))

n = int(input('长度: '))
c = mk_fib(n)
print©



#### 位置参数:


位置参数保存在sys模块的argv列表中


![](https://img-blog.csdnimg.cn/3f38ce0b0e7f420f9e0dda2800c2c233.png)​



> 
> import sys
> 
> 
> print(sys.argv)
> 
> 
> # python3 01.py xixi haha 123
> 
> 
> ['01.py', 'xixi', 'haha', '123']
> 
> 
> 


#### 默认参数:




###默认参数###
def pstar(num = 20):
    print(‘*’ * num)

pstar()
pstar(50)



####  拷贝函数:




import sys
def copy(src_fname, dst_fname):

src_fobj = open(src_fname, ‘rb’)
    dst_fboj = open(dst_fname, ‘wb’)

#就像商品供货的例子

while 1:
        data = src_fobj.read(4096)
        if data == b’‘:
    #if len(data) == 0:
    #if not data : 空串(b’')为假,取反为真
            break
        else:
            dst_fboj.write(data)

src_fobj.close()
    dst_fboj.close()

copy(sys.argv[1],sys.argv[2])

(nsd1907) [root@room9pc01 day03]# python 01.py /etc/fstab /tmp/cp.txt
(nsd1907) [root@room9pc01 day03]# md5sum /etc/fstab /tmp/cp.txt
48ff680b643791cafc6d825ea978321f  /etc/fstab
48ff680b643791cafc6d825ea978321f  /tmp/cp.txt



## 模块:


* 一个以.py结尾的python文件就是一个模块
* 文件代码的物理组织形式,模块是逻辑形式
* 将文件名的.py扩展名去除,得到的就是模块名
* 模块名也是一个名词,它也要满足相关的约定(首字符:字母下划线,后续字母数字下划线)




vim star.py
hi = ‘hello shabichao’
def pstar(n=30):
    print(‘*’ * n)

import star
star.
star.hi      star.pstar( 
star.hi
‘hello shabichao’
star.pstar()


star.pstar(50)




### 导入模块:




import star   # 常用

print(star.hi)

star.pstar()

from random import choice, randint   # 常用

print(choice(‘abcd’))

print(randint(1, 100))

import sys, getpass   # 不常用

import getpass as gp    # 导入模块时,给模块取别名,不常用
upass = gp.getpass()
print(upass)



### 模块特性:


### ​



(nsd1907) [root@room9pc01 day03]# echo ‘print(name)’ > foo.py
(nsd1907) [root@room9pc01 day03]# echo ‘import foo’ > bar.py
(nsd1907) [root@room9pc01 day03]# cat foo.py
print(name)
(nsd1907) [root@room9pc01 day03]# cat bar.py
import foo
(nsd1907) [root@room9pc01 day03]# python3 foo.py
main
(nsd1907) [root@room9pc01 day03]# python3 bar.py
foo

#####################调用模块或者之后使用py脚本######################
hi = ‘hello shabichao’#全局变量之后才可以调用
def pstar(n=30):
    print(‘*’ * n)

if name == ‘main’:
    print(hi)
    pstar()
    pstar(50)

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

img-T9CJJpfk-1714849562352)]
[外链图片转存中…(img-27a0viaL-1714849562352)]

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 9
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值