1.函数与面向对象

2022-01-05  本文已影响0人  软件开发技术修炼

一、函数

func2 = lambda x,y: x+y

def func(x,y):
   return x+y

二、参数

1、位置参数,有几个位置参数就传几个,必须在关键字参数之前

def method(a,b):
  print(a)
  print(b)
method(1,23)

2、默认参数为给参数一个以上默认值k = v,调用时有默认值的参数可传可不传,必须在位置参数后

def method(a,b=5):
  print(a)
  print(b)
method(1)
method(1,3)

3、非固定参数也叫可变参数,不固定的*args,必须在位置与默认参数后

def method(a,b=2,*args):
  print(a)
  print(b)
  print(args)
method(1,23,"3","ab")  #注意,非固定参数传进来的是一个元祖
#输出:
1
23
('3', 'ab')

4、关键字参数也是不固定的,**args,在调用函数的时候使用×××=×××,传入的是一个字典,多种参数一起使用,放在最后面

def method(a=3,**args):
  print(a)
  print(args)
method(3,c=2,key=5,e=6)
#输出:
3
{'c': 2, 'key': 5, 'e': 6}

注意:参数定义顺序:位置参数、默认参数、非固定参数,关键字参数

三、全局变量与局部变量

全局变量,如果在函数中修改,需要加global关键字声明;如果是list、字典和集合的话,则不需要加global,可直接修改

局部变量

a=3
def method():
  a=4
  return a

def method2():
  print(a)

method2()
method()
method2()
#输出:
3
4
3           #实际上a并没有变化

全局变量

a=1
def method():
  global a
  a = 4
  return a
def method2():
  print(a)
method2()
method()
method2()
#输出:
3
4
4     #a的值发生了变化

列表局部变量

a=[1,3]
def method():
    a.append(5)
    return a
def method1():
    print(a)

method1()
print(method())
method1()
#输出:
[1, 3]
[1, 3, 5]
[1, 3, 5]

四、两种编程思想

创建一个类
# 通过 class 关键字,进行定义了一个类
class Person:
    # 类变量
    name = "tly"
    age = 29
    gerder = 'male'

  # 构造方法,在类实例化的时候自动被调用
  def __init__(self,name,age,weight):
    # self.变量名的方式,访问的变量,叫做实例变量
    self.name = name
    self.age = age
    self.weight = weight

  @classmethod
  def eat(self):
    print(f"{self.name} is eating")

  def play(self):
    pass

# 类方法和实例方法的区别
# Person.eat() 类方法不可访问 实例方法;如何访问呢,类方法加装饰器classmethod,
zs = Person('zhangsi',31,231)
zs.eat()

# 类变量和实例变量的区别:都可以被修改
print(Person.name)
zs = Person('zhangsan',23,'男',139)
print(zs.name)

#实例化一个对象,类的实例化,创建了一个实例
zs = Person("zhangsan",21,30kg)
#类的方法
zs.set_age(28)
zs.name("hji")
zs.eat()
上一篇 下一篇

猜你喜欢

热点阅读