Python 基础(二)

摘要:
注意:所有默认参数都不能出现在非默认参数defsale_ Car:print#print price 1000colorredbrand carmys_second_ handTruesale_ Car3)变量参数函数的变量参数是传入的参数(数字),可以更改。类可以先定义自己的属性,类后面还可以跟着def来定义函数。注意:这里是双下划线的classCalculator:name='goodcalculator'price=18def__init__:Self。name=名称本身。price=价格本身。h=自身高度。wi=宽度本身。we=weightcal=计算器printprint3。inputvariable=input()表示运行后,可以在屏幕中输入一个数字,该数字将分配给参数。

一、def 函数

python 提供了函数功能,可以将想要在程序中重复使用的部分功能抽象成一个函数,以方便程序调用,或者提供给其他模块使用

def function_name(parameters):
    expressions

python 使用 def 开始函数定义,紧接着是函数名,括号内部为函数的参数,内部为函数的具体功能实现代码,如果想要函数有返回值,在 expressions 中的逻辑代码中用 return 返回

def function():
    print('This is a function')
    a = 1+2
    print(a)

# 打印
# This is a function
# 3
function()

1) 函数参数

在调用函数的时候,参数个数和位置一定要按照函数定义。如果忘记了函数的参数的位置,只知道各个参数的名字,可以在函数调用的过程中,指明特定的参数,这样的话,参数的位置将不受影响

def func(a, b):
    c = a+b
    print("the c is %d" % c)

# 打印 the c is 3
func(b = 1, a = 2)

2) 默认参数

在定义函数时,有时候有些参数在大部分情况下是相同的,只不过为了提高函数的适用性,提供了一些备选的参数,为了方便函数调用,可以将这些参数设置为默认参数,那么该参数在函数调用过程中可以不需要明确给出

def function_name(para_1,...,para_n=defau_n,..., para_m=defau_m):
    expressions

函数声明只需要在默认参数的地方用 = 号给定即可。注意:所有的默认参数都不能出现在非默认参数的前面

def sale_car(price, color='red', brand='carmy', is_second_hand=True):
    print('price %d  color %s  brand %s  is_second_hand %s' % (price, color, brand, str(is_second_hand)))

# 打印 price 1000  color red  brand carmy  is_second_hand True
sale_car(1000)

3) 可变参数

函数的可变参数是传入的参数(个数)是可以变化的。注意:可变参数在函数定义不能出现在特定参数和默认参数前面,因为可变参数会吞噬掉这些参数

def report(name, *grades):
    total_grade = 0
    for grade in grades:
        total_grade += grade
    print('%s total grade is %d' % (name, total_grade))

# 打印 Mike total grade is 17
report('Mike', 8, 9)

4) 关键字参数

关键字参数可以传入 0 个或者任意个含参数名的参数,这些参数名在函数定义中并没有出现,这些参数在函数内部自动封装成一个字典(dict)

def portrait(name, **kw):
    print('name is %s' % name)
    for k,v in kw.items():
        print('%s  %s' % (k, str(v)))
# 打印
# name is Mike
# country  China
# age  24
# education  bachelor
portrait('Mike', age=24, country='China', education='bachelor')

 5) 自调用

如果想要在执行脚本的时候执行一些代码,比如单元测试,可以在脚本最后加上单元测试代码,但是该脚本作为一个模块对外提供功能的时候,单元测试代码也会执行,这些往往是我们不想要的,可以把这些代码放在脚本最后。在执行该脚本的时候,if 判断语句将会是 True,此时其内部的代码将会执行;如果外部调用该脚本,if 判断语句则为 False,其内部的代码将不会执行

if __name__ == '__main__':
    #code_here

 二、class 类

class 定义一个类, 后面的类别首字母推荐以大写的形式定义,比如 Calculator。 class 可以先定义自己的属性(如: name = 'Good Calculator'),class 后面还可以跟 def,定义一个函数(如: def add(self, x, y))。注意:这里的self 是默认值

class Calculator:
    name = 'Good Calculator'
    price = 18
    def add(self, x, y):
        print(self.name)
        result = x + y
        print(result)
    def minus(self, x, y):
        result = x - y
        print(result)
    def times(self, x, y):
        print(x * y)
    def divide(self, x, y):
        print(x / y)

cal = Calculator()
cal.name
cal.add(8, 10)

 __init__可以理解成初始化class的变量。注意:这里是双下划线

class Calculator:
    name = 'good calculator'
    price = 18
    def __init__(self, name, price, height = 10, width = 14, weight = 16):
        self.name = name
        self.price = price
        self.h = height
        self.wi = width
        self.we = weight

cal = Calculator('bad calculator',18,17,16,15)
print(c.name)
print(c.wi)

 三、input

variable = input() 表示运行后,可以在屏幕中输入一个数字,该数字会赋值给自变量。注意:输入的只能是数字(整型或浮点型),输入字符串会报错

variable1 = input('please input a number')
variable2 = int(input('please input a number'))

四、Tuple 元组

用小括号或者无括号来表述,是一连串有顺序的数字

# 这两种方式都是正确的
tuple1 = (12, 3, 5, 15, 6)
tuple2 = 12, 3, 5, 15, 6

# 输出各个元素的两种方式
for content in tuple1:
    print(content)
for index in range(len(tuple2)):
    print('index = %d, number in tuple = %s' % (index, str(tuple2[index])))

五、List 列表

用中括号来表述,是一系列有序的数列。除了可以像元组那样拿到各个元素之外,还有一系列自带的功能

1) 添加

a = [1, 2, 3, 4, 1, 1, -1]
a.append(0) # 在a的最后面追加一个0
a.insert(1, 0) # 在位置1处添加0

2) 移除

a.remove(2) # 删除列表中第一个出现的值为2的项

3) 显示特定位

print(a[0])  # 显示列表a的第0位的值
print(a[-1]) # 显示列表a的最末位的值
print(a[0:3]) # 显示列表a的从第0位 到 第2位(第3位之前) 的所有项的值
print(a[5:])  # 显示列表a的第5位及以后的所有项的值
print(a[-3:]) # 显示列表a的倒数第3位及以后的所有项的值

4) 打印列表中的某个值的索引

print(a.index(2)) # 显示列表a中第一次出现的值为2的项的索引

5) 统计列表中某个值出现的次数

print(a.count(-1))

6) 排序

a.sort() # 默认从小到大排序
a.sort(reverse = True) # 从大到小排序

7) 多维列表

multi_dim_a = [[1, 2, 3], [2, 3, 4], [3, 4, 5]] # 三行三列

 六、字典

如果说 List 是有顺序地输入输出的话,那么字典的存档形式则是无需顺序的。

在字典中,有 key 和 value 两种元素,每一个 key 对应一个 value,key 是名字,value 是内容。数字和字符串都可以当作 key 或者 value,在同一个字典中,并不需要所有的 key 或 value 有相同的形式。List 可以看成是一种 key 为有序数列的字典

字典还可以以更多样的形式出现,例如:字典的元素可以是一个 List,或者再是一个列表,再或者是一个 function。索引需要的项目时,只需要正确指定对应的 key 就可以了

d1 = {'apple':1, 'pear':2, 'orange':3}
d2 = {1:'a', 'b':2, 'c':3}
d3 = {'apple':[1, 2, 3], 'pear':{1:3, 3:'a'}, 'orange':func}
print(d1['apple'])  # 1
print(d2['b'])  # 2
print(d2[1])  # a
print(d3['pear'][3])    # a
del d1['pear']

七、import 模块

import time # import time 模块
print(time.localtime())

import time as t # t 可以自己定义
print(t.localtime())

from time import time, localtime # 只 import 自己想要的功能
print(localtime())
print(time())

from time import * # 输入模块的所有功能
print(localtime())

 八、读写文件

使用 open 能够打开一个文件,open 的第一个参数为文件名和路径 ‘my file.txt’,第二个参数为将要以什么方式打开它

text = 'This is my first test. 
This is the second line. 
This the third '
my_file = open('my file.txt', 'w')
my_file.write(text)
my_file.close()  

给文件添加内容,打开类型为 a,表示 append

append_text = '
This is appended file.'
my_file = open('my file.txt','a')
my_file.write(append_text)
my_file.close()

读取文件内容

file = open('my file.txt','r') 
content = file.read() # 读取文本的所有内容
content = file.readline()  # 读取第一行
second_read_time = file.readline()  # 第二次使用时读取第二行
content = file.readlines() # 读取所有行并以 list 方式储存
print(content)

免责声明:文章转载自《Python 基础(二)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇阿里云OSS图片格式转换Kali学习笔记34:配置TFTP和FTP服务下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Ansible之路——第四章:Host Inventory

Ansible 可同时操作属于一个组的多台主机,组和主机之间的关系通过 inventory 文件配置. 默认的文件路径为 /etc/ansible/hosts。 除默认文件外,还可以同时使用多个 inventory 文件,也可以从动态源,或云上拉取 inventory 配置信息。 4.1 静态Inventory文件  静态Inventory指的是在文件/...

python基础实现tcp文件传输

准备工作,实现文件上传需要那些工具呢?   socket(传输)、open()(打开文件)、os(读取文件信息),当然还有辅助类sys和json,下面我们开始吧 import socket,sys import json,os #创建socket对象 server = socket.socket(socket.AF_INET,socket.SOCK_ST...

Python 关于列表字典的键值修改

list (修改列表的索引值) 循环一个列表时,最好不要对原列表有改变大小的操作,这样会影响你的最终结果。 #使用负索引进行修改列表 print('First') lis = [11, 22, 33, 44, 55] print(lis) for num in range(len(lis)-1,-1,-1): if num % 2 != 0:...

python的文件操作1,监控日志联系、读取大文件、修改文件、集合、元组、random模块以及函数初识

一、判断 #非空即真,非零即真# 非空(None,'',[],{})都是空umser=input('请输入姓名').strip()if umser:print('umser不为空')else:print('umser为空')print(len(umser)>0)if 1:print('真')else:print('假') 一、文件读写 fw=op...

python新建txt文件,并逐行写入数据

#coding=utf-8txtName = "codingWord.txt"f=file(txtName, "a+")for i in range(1,100): if i % 2 == 0: new_context = "C++" + ' ' f.write(new_context) else:...

scrapyd-deploy 把scrapy项目打包上传部署到scrapyd服务端报错 Deploy failed (500)

Outline 在把scrapy任务部署到scrapyd服务上时,遇到问题一直不成功: 报错如下: (Deploy failed (500):,部署失败) scrapyd-deploy muji_data_python_spider -p muji_data_python_spider Packing version 1617328541 scrapyd...