python基础语法二

json

json其实就是字典格式,可以与字典互换

字典转json
import json
stu={'name':'tom','age':13,'sex':'male'}
json_stu=json.dumps(stu)
print(json_stu=)
json转字典
json.loads(json_stu)

字符串

字符串的三种表示方式:普通字符串,原始字符串和长字符串
转义符
在这里插入图片描述
在普通字符串前面加上r就是原始字符串 例如:r’hello\n worid’
长字符串用三个单引号或者双引号括起来"""或者‘’‘

字符串与数字的相互转换:

将字符串转换为数字,可以用int()和float()实现,如果成功,返回数字,否则引发异常。

>>> int("80")
80
>>> int("80.0")
Traceback (most recent call last):
  File "<pyshell#1>", line 1, in <module>
    int("80.0")
ValueError: invalid literal for int() with base 10: '80.0'
>>> float("80.0")
80.0
>>> int("AB")
Traceback (most recent call last):
  File "<pyshell#3>", line 1, in <module>
    int("AB")
ValueError: invalid literal for int() with base 10: 'AB'
>>> int("AB",16)
171

将数字转换成字符串,使用str()函数

>>> str(123)
'123'
>>> money=123.123
>>> str(money)
'123.123'
>>> str(True)
'True'
格式化字符串

format()进行格式化

占位符

使用{}表示

>>> i=32
>>> s='i*i='+str(i*i)
>>> s
'i*i=1024'
>>> s='i*i={}'.format(i*i)
>>> s
'i*i=1024'
>>> s='{0}*{0}={1}'.format(i,i*i)
>>> s
'32*32=1024'
>>> s='{p1}*{p1}={p2}'.format(p1=i,p2=i*i)
>>> s
'32*32=1024

格式化控制符位于占位符索引或占位符名字的后面,之间用冒号分隔。语法:{参数序号:格式控制符}或者{参数名:格式控制符}
在这里插入图片描述

money=5852.122
name='tom'
str='{0:s}年龄{1:d},工资是{2:f}元'.format(name,20,money)
print(str)
str1='{0:s}年龄{1:d},工资是{2:0.2f}元'.format(name,20,money)
print(str1)
str2='{0}今天收入是{1:G}'.format(name,money)
print(str2)

在这里插入图片描述

操作字符串
字符串查找

find():查找自字符串,语法为str.find([sub[,start[,end]])表示为:在索引start到end之间查找子字符串sub,如果找到就返回最左端位置索引,没找到返回-1

str='hello world'
sub_s=str.find('e')
print(sub_s)
sub_s1=str.find('l')
print(sub_s1)
sub_s2=str.find('l',4)
print(sub_s2)
sub_s3=str.find('l',4,6)
print(sub_s3)

在这里插入图片描述

字符串替换

使用replace()方法替换子字符串,语法为str.replace(old,new[,count])
用new子字符串替换old子字符串,count参数制定了替换old子字符串的个数,如果count省略,则替换所有

text='AB CD EF GH IJ'
t=text.replace(' ','|',2)
print(t)
t1=text.replace(' ','|')
print(t1)

在这里插入图片描述

字符串分割

使用split()方法
str.split(sep=None,maxsplit=-1)

text='AB CD EF GH IJ'
t=text.split(' ')
print(t)
t1=text.split(' ',maxsplit=0)
print(t1)
t2=text.split(' ',maxsplit=1)
print(t2)
t3=text.split(' ',maxsplit=2)
print(t3)

在这里插入图片描述

函数

定义函数

def 函数名(形式参数列表):
函数体
return 返回值

# coding=utf-8

def rect_area(width,height):
    area=width*height
    return area

def print_area(width,height):
    area = width * height
    print("{0}x{1} 长方形面积:{2}".format(width,height,area))

#调用函数
r_area=print_area(320,400)

#函数默认值
def make_coffe(name='卡布奇诺'):
    return "制作一杯{0}咖啡.format(name)"

coffee1=make_coffe()
coffee2=make_coffe("拿铁")
print(coffee1)
print(coffee2)

在这里插入图片描述

可变参数
# *可变参数在函数中被组装成一个元组

def sum(*num):
    total=0
    for n in num:
        total+=n
    return total

print(sum(10,20,30))

# **可变参数在函数中被封装成一个字典
def show_info(**info):
    print("---------")
    for key,value in info.items():
        print('{0}-{1}'.format(key,value))

show_info(name='tom',age=18,sex='female')

在这里插入图片描述

局部变量与全局变量
x=20
def print_value():
    x=10
    print('x={0}'.format(x))

print_value()
print('全局x={0}'.format(x))

在这里插入图片描述

x=20
def print_value():
    global x#将x变量提升为全局变量
    x=111
    print('x={0}'.format(x))

print_value()
print('全局x={0}'.format(x))

在这里插入图片描述

函数类型

一个函数可以作为另一个函数的返回值使用,也可以作用另一个函数的参数使用

def add(a,b):
    return a+b

def sub(a,b):
    return a-b

def calc(opr):
    if opr == '+':
        return add
    else:
        return sub

f1=calc("+")
f2=calc("-")
print("10+5={0}".format(f1(10,5)))
print("10-5={0}".format(f2(10,5)))

在这里插入图片描述

过滤函数
filter()函数

语法:filter(function,iterable)—iterable会被遍历,它的元素会被逐一传入function()函数中。若function()返回true被保留.filter()返回值不是一个列表,需要用list()转换

def f1(x):
    return x>50

data1=[20,20,123,14,46,66,82,1245,4,2]
filter1=filter(f1,data1);

data2=list(filter1)
print(data2)

在这里插入图片描述

映射函数
map()

语法:map(function,iterable)

def f1(x):
    return x+2

data1=[20,20,123,14,46,66,82,1245,4,2]
map1=map(f1,data1);

data2=list(map1)
print(data2)

在这里插入图片描述

lambda()函数

格式:lambda 参数列表:lambda体

def calc(opr):
    if opr == '+':
        return lambda a,b:(a+b)
    else:
        return lambda a,b:(a-b)

f1=calc("+")
f2=calc("-")
print("10+5={0}".format(f1(10,5)))
print("10-5={0}".format(f2(10,5)))
递归函数

递归函数:重复进行调用某个函数,直到不符合某个条件,结束调用

类与对象

定义类

class 类名[(父类)]:

class Car(object):
    pass

car=Car()

在这里插入图片描述
在这里插入图片描述

class Dog:
    #__init__是构造方法,初始化实例变量
    def __init__(self,name,age):
        self.name=name
        self.age=age

d=Dog('tom',1)
print('我家狗名叫{0},{1}岁了'.format(d.name,d.age))

在这里插入图片描述

class Dog:
    #__init__是构造方法,初始化实例变量
    def __init__(self,name,age,sex='雌性'):
        self.name=name
        self.age=age
        self.sex=sex


d1=Dog('tom',1)
d2=Dog('monica',1,'雄性')
d3=Dog(name='花花',sex='雄性',age=3)

print('我家狗名叫{0},{1}岁{2}'.format(d1.name,d1.age,d1.sex))
print('我家狗名叫{0},{1}岁{2}'.format(d2.name,d2.age,d2.sex))
print('我家狗名叫{0},{1}岁{2}'.format(d3.name,d3.age,d3.sex))

在这里插入图片描述

实例方法

实例方法:使用 def 关键字来定义一个方法,与一般函数定义不同,类方法必须包含参数 self,且为第一个参数,self 代表的是类的实例。实例方法只能被实例对象调用

class Dog:
    #__init__是构造方法,初始化实例变量
    def __init__(self,name,age,sex='雌性'):
        self.name=name
        self.age=age
        self.sex=sex

    def run(self):
        print("{}在跑".format(self.name))

    def speak(self,sound):
        print("{}在叫,{}!".format(self.name,sound))

d1=Dog('tom',1)
d1.run()
d1.speak("汪汪汪")

在这里插入图片描述

静态方法

由@staticmethod装饰的方法,没有self这个参数,而将这个方法当成一个普通的函数使用。可以被类或类的实例对象调用

#静态方法‐‐‐》公共方法:类和对象公用
@staticmethod
def static_method():
	print("这是一个静态方法")


类变量

通过类名直接调用,不需要实例化对象调用

class Dog:

    legs='四条腿'#类变量,通过类名调用
    #__init__是构造方法,初始化实例变量
    def __init__(self,name,age,sex='雌性'):
        self.name=name
        self.age=age
        self.sex=sex

    def run(self):
        print("{}在跑".format(self.name))

    def speak(self,sound):
        print("{}在叫,{}!".format(self.name,sound))

d1=Dog('tom',1)
d1.run()
d1.speak("汪汪汪")`在这里插入代码片`
print("狗都有{}".format(Dog.legs))

在这里插入图片描述

类方法
class Dog:

    legs='腿'#类变量,通过类名调用
    #__init__是构造方法,初始化实例变量
    def __init__(self,name,age,sex='雌性'):
        self.name=name
        self.age=age
        self.sex=sex

    @classmethod
    #类方法‐‐‐‐》公共方法:类和对象公用
    def legNum(cls,num):#cls代表类自身
        return  str(num)+'条'+cls.legs

legnum=Dog.legNum(4)
print("狗都有{}".format(legnum))


-------------------------------------------------------------------------
print结果:
狗都有4条腿

封装性

私有变量

在变量前加上双下划线__即可
在类的内部可以访问私有变量,在类的外部不能访问私有变量

私有方法

在方法前加上双下划线__即可
在类的内部可以访问私有方法,在类的外部不能访问私有方法
在类中不应该存在公有成员变量,设计为私有,通过get和set取值赋值

class Dog:

    def __init__(self,name,age,sex='雌性'):
        self._name=name
        self._age=age
        self.sex=sex

    def get_age(self):
        return self._age

    def set_age(self,age):
        self._age=age

dog=Dog("球球",2)
print("年纪:{}".format(dog.get_age()))
dog.set_age(3)
print("修改后年纪:{}".format(dog.get_age()))

--------------------------------------------------------------------------------
年纪:2
修改后年纪:3

实例对象调用私有变量
class Dog:

    def __init__(self,name,age,sex='雌性'):
        self._name=name
        self._age=age

    #定义age属性的get()方法,使用@property装饰器,方法名就是属性名
    @property
    def age(self):#替代get_age(self)
        return self._age

    @age.setter
    def age(self,age):#替代set_age(self,age)
        self._age=age

dog=Dog('球球',2)
print('狗狗年纪{}'.format(dog.age))
dog.age=3
print('狗狗修改后年纪{}'.format(dog.age))


-------------------------------------------------------------------------------
狗狗年纪2
狗狗修改后年纪3

继承性

class Animal:
    def __init__(self,name):
        self.name=name

    def show_info(self):
        return "动物的名字:{0}".format(self.name)

    def move(self):
        print("move move")

class Cat(Animal):
       def __init__(self,name,age):
        super().__init__(name)#调用父类构造方法
        self.age=age

cat=Cat('tom',2)
cat.move()
print(cat.show_info())

-------------------------------------------------------------------------------
move move
动物的名字:tom
多继承

python可以继承多个父类,如果在多个父类中有相同的成员方法或者变量,则子类优先继承左边父类的成员方法或者变量

class Horse:
    def __init__(self,name):
        self.name=name

    def show_info(self):
        return "马名字:{}".format(self.name)

    def run(self):
        print("马儿跑")

class Donkey:
    def __init__(self,name):
        self.name=name

    def show_info(self):
        return "驴名字:{}".format(self.name)

    def run(self):
        print("驴儿跑")

    def roll(self):
        print("驴打滚")

class Mule(Horse,Donkey):
    def __init__(self,name,age):
        super().__init__(name)
        self.age=age

m=Mule('小骡子',1)
m.run()
m.roll()
print(m.show_info())

--------------------------------------------------------------------------------
马儿跑
驴打滚
马名字:小骡子
方法的重写

子类重写父类方法

class Horse:
    def __init__(self,name):
        self.name=name

    def show_info(self):
        return "马名字:{}".format(self.name)

    def run(self):
        print("马儿跑")

class Donkey:
    def __init__(self,name):
        self.name=name

    def show_info(self):
        return "驴名字:{}".format(self.name)

    def run(self):
        print("驴儿跑")

    def roll(self):
        print("驴打滚")

class Mule(Horse,Donkey):
    def __init__(self,name,age):
        super().__init__(name)
        self.age=age

    def run(self):#子类重写父类方法
        print("{}在跑".format(self.name))

m=Mule('小骡子',1)
m.run()

--------------------------------------------------------------------------------
小骡子在跑

多态性

class Animal:
    def speak(self):
        print('动物叫。。')

class Dog(Animal):
    def speak(self):
        print('小狗汪汪叫')


class Cat(Animal):
    def speak(self):
        print('小猫汪汪叫')

an1=Dog()
an2=Cat()
an1.speak()
an2.speak()
--------------------------------------------------------------------------------
小狗汪汪叫
小猫汪汪叫
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值