一些例子讲述一些概念
1.+=对于变量相当于相加再赋值操作,对于列表相当于执行extend方法
#定义全局变量
gl_num=10
gl_test_list=[1,2,3]
def demo(num,test_list):
print("函数开始")
#对数字和列表实施+=操作
num+=num
test_list+=test_list
print("num=%d" %num)
print(test_list)
demo(gl_num,gl_test_list)
print("函数结束")
#输出函数执行后的数字和列表
print("num=%d"%gl_num)
print(gl_test_list)
输出结果为:
函数开始
num=20
[1, 2, 3, 1, 2, 3]
函数结束
num=10
[1, 2, 3, 1, 2, 3]
注意:若传递参数是可变类型(字典、列表),若在函数内部使用方法改变了数据内容,同样会影响到外部数据。
2.使用函数时,若要返回一个函数值,直接return 变量;若要返回多个数值,则要使用元组,其中在使用return时()可以省略
def measure():
print("开始测量。。。")
temp=39
witness=50
print("测量结束。。。")
return (temp,witness)
result=measure()
print(result)
gl_temp,gl_witness=measure()
print(gl_temp )
print(gl_witness)
输出结果为:
开始测量。。。
测量结束。。。
(39, 50)
开始测量。。。
测量结束。。。
39
50
注意:返回多个内容最好使用不同变量接收,以便以后调用
3.制定函数的缺省参数
def print_info(name,gender=True):
gender_text="boy"
if not gender:
gender_text="girl"
print("%s is %s" %(name,gender_text))
print_info("xiaoming")
print_info("xiaoli",False)
输出结果:
xiaoming is boy
xiaoli is girl
注意:应选定数量多的值为默认值,当存在不同值时不应该设置缺省值。设定缺省值时在参数后使用赋值语句,可指定参数的缺省值
4.多值参数
一个函数接受不确定数目的参数
def demo(num,*nums,**person):
print(num)
print(nums)
print(person)
demo(1,2,3,4,name="xiaohong")
输出结果为:
1
(2, 3, 4)
{'name': 'xiaohong'}
注意输入的格式
元组和字典的拆包
def demo(*args,**kwargs):
print(args)
print(kwargs)
gl_args = [1,2,3,4]
gl_kwargs = {"name":"xiao","age":18}
#在调用函数时,元组实参前添加*,字典实参前添加**
demo(*gl_args,**gl_kwargs)
输出结果:
(1, 2, 3, 4)
{'name': 'xiao', 'age': 18}
5.递归函数:自己调用自己,内部代码相同,只是参数不同,当参数满足某一条件时,函数不再执行。
def sum_numbers(num):
print(num)
if num == 1:
return
sum_numbers(num-1)
sum_numbers(3)
输出结果:
3
2
1
面向对象OOP
过程是对一段功能独立代码进行封装,只负责执行,不返回结果。
函数不仅能执行,还可以返回结果
面向对象相比较面向过程是一个更大的封装,不仅把功能独立的代码封装到方法中,而且要将多个方法封装到对象中,侧重谁来做。
1.类:对于具有相同行为或者特征的事物的统称,用于创建对象,不能直接使用。
2.对象:由类创造的一个具体存在。
类只需要有一个,对象可以有很多个,不同对象属性可以不同。
3.创建类三要素:
(1)类名(大驼峰法:单词首字母大写,字母之间不需要加下划线)
(2)类包含的属性:即这类事物具有的特征
(3)类包含的方法:即这类事物具有的行为
面向对象语法
1.dir()函数
2.定义类:
class 类名:
def方法一(self,参数列表):
pass
def方法一(self,参数列表) :
创建对象
对象变量=类名()
1.class Cat: def eat(self): #哪一个对象调用的方法,self就是对哪一个对象的引用 #使用self在方法内输出小猫名字 print("%s爱吃鱼"%self.name) def drink(self): print("%s要喝水"%self.name) #创建猫对象 tom = Cat() #可以使用.属性名,利用赋值语句 tom.name="汤姆" tom.eat() tom.drink() print(tom) lazy_cat = Cat() lazy_cat.name = "lili" lazy_cat.eat() lazy_cat.drink() print(lazy_cat)
输出结果:
汤姆爱吃鱼
汤姆要喝水
<__main__.Cat object at 0x0000017A9B84A278>
lili爱吃鱼
lili要喝水
<__main__.Cat object at 0x0000017A9B84A2B0>
初始化方法:__init__指定类中包含哪些属性
定义属性:self.属性名 = 属性的初始值
class Dog:
#增加形参,把对象特有属性以参数形式传递到初始化方法内部
def __init__(self,new_name):
self.name =new_name
def eat(self):
print("%s like eatting kelocoin"%self.name)
dog = Dog("haha")
dog.eat()
lazy_dog = Dog("dalanmao")
print("狗狗名字是 %s" %dog.name)
print("大懒猫名字是:%s"% lazy_dog.name)
输出结果:
haha like eatting kelocoin
狗狗名字是 haha
大懒猫名字是:dalanmao