学习内容1
1.基本函数的构成:定义、实现和调用函数参数,函数返回值。 (第八章)
定义
def 函数名():
“““注释”””
#输出
print()
#调用函数
函数名()
调用函数信息
#username是一个形参
def greet_user(username):
"""显示简单的问候语"""
print("Hello, " + username.title() + "!")
#‘jane’就是一个实参
greet_user('jane')
结果
Hello, Jane!
传递实参
#位置实参
def make_shirt(size_number, word_sample):
"""T恤尺码和字样"""
print("The T-shirt's size is " + size_number + " and the word sample is " + word_sample + "!" )
make_shirt('XL', 'TIMES NEW ROMAN')
#关键字实参
def make_shirt(size_number, word_sample):
"""T恤尺码和字样"""
print("The T-shirt's size is " + size_number + " and the word sample is " + word_sample + "!" )
make_shirt(size_number='XL',word_sample='TIMES NEW ROMAN')
make_shirt(word_sample='TIMES NEW ROMAN',size_number='XL')
#默认值
def make_shirt(size_number, word_sample='TIMES NEW ROMAN'):
"""T恤尺码和字样"""
print("The T-shirt's size is " + size_number + " and the word sample is " + word_sample + "!" )
make_shirt('XL')
结果
The T-shirt's size is XL and the word sample is TIMES NEW ROMAN!
The T-shirt's size is XL and the word sample is TIMES NEW ROMAN!
The T-shirt's size is XL and the word sample is TIMES NEW ROMAN!
The T-shirt's size is XL and the word sample is TIMES NEW ROMAN!
函数返回的值叫做返回值,可使用return语句将值返回到调用函数的代码行。
返回简单值
def name(first_name, last_name):
"""返回完整的姓名"""
full_name = first_name + " " + last_name
return full_name.title()
musician = name('jimi','hendrix')
print(musician)
结果
Jimi Hendrix
2.函数内部变量的作用域,可以通过locals()和globals()两个函数来了解。
1.变量起作用的代码范围被称为变量的作用域,不同作用域内的变量互不影响。在函数内部定义的变量为局部变量,在函数外部定义的变量为全局变量。
2.局部变量只在定义它的函数体内有效,在函数外即使使用同名的变量,也会被认为是另一个变量。
3 全局变量在定义后的代码中都有效,包括它后面定义的函数体内,即若函数体内和函数体外的变量同名同值,该变量为隐式的全局变量。如果全局变量与局部变量同名不同值,则在定义局部变量的函数中,只有局部变量有效,即局部变量覆盖掉同名的全局变量。
4.若一个变量已经在函数外定义,在函数内需要修改这个变量的值,可以在函数内通过global关键字来声明这个变量为全局变量。若一个变量并未在函数外定义,在函数内直接使用global关键字将一个变量声明为全局变量,在调用这个函数后,将自动增加新的全局变量。
5.当函数运行结束后,在函数内部定义的局部变量会被自动删除而不可访问,而在函数内部定义的全局变量仍然可以访问。
6.一般而言局部变量的引用比全局变量速度快,应该优先考虑。除非真的必要,应该避免使用全局变量,因为全局变量会增加不同函数之间的隐式耦合度,降低代码可读性,使得代码测试和纠正变得困难。
locals()和globals()这两个函数主要提供,基于字典的访问局部变量和全局变量的方式。
a = 0#函数外部定义变量a
def sum(arg1, arg2):
a = arg1 + arg2#函数内部定义变量a
print("函数内是局部变量: ", a)
return a
sum(2,5)#函数内部a的值
print("函数外是全局变量: ", a)#函数外部a的值
结果
函数内是局部变量: 7
函数外是全局变量: 0
3.匿名函数:lambda,了解map函数,并用lambda完成列表(注:列表中各个元素全为数字类型)中每一个元素+1的操作。
lambda的语法:lambda [arg1 [,arg2,…argn]]:expression
例如:lambda x, y: x + y
map函数语法:map(function, iterable, …)
function -- 函数
iterable -- 一个或多个序列
s = list(map(lambda x: x+1,[1,2,3]))
print(s)
结果
[2, 3, 4]
4.了解文件操作,如何写入,读取,追加,并了解读取文件中每一行的几种方式。(第十章)
#读取,将文件保存在程序所在目录中并打开
with open('pi.txt') as file_object:
contents = file_object.read()
print(contents)
结果
3.1415926535
8979323846
2643383279
#逐行读取
with open('pi.txt') as file_object:
for line in file_object:
print(line)
结果
3.1415926535
8979323846
2643383279
#写入文件
filename = 'programming.txt'#不存在将会自动创建,存在将清空文件内容
with open(filename,'w') as file_object:
file_object.write("I love programming.")
filename = 'programming.txt'
with open(filename,'w') as file_object:
file_object.write("I love playing.")
结果
programming.txt
I love programming.
I love playing.
#附加
filename = 'programming.txt'
with open(filename,'a')as file_object:
file_object.write("I love python!\t")
结果
programming.txt
I love playing.
I love python!
学习内容2
1.创建和使用类(第九章),为什么说python中一切皆对象?,object类代表了什么?
class Dog():
"""一次模拟小狗的简单尝试"""
def __init__(self,name,age):
"""初始化属性name和age"""
self.name = name
self.age = age
def sit(self):
"""模拟小狗被命令时蹲下"""
print(self.name.title() + "is now sitting. ")
def roll_over(self):
"""模拟小狗被命令时打滚"""
print(self.name.title() + "rolled over!" )
my_dog = Dog('rock', 6)
print("My dog's name is " + my_dog.name.title() + ".")
print("My dog is " + str(my_dog.age) + " years old.")
结果
My dog's name is Rock.
My dog is 6years old.
Rock is now sitting.
Rock rolled over!
2.使用类和实例(第九章),self关键字有什么作用?
self:每个与类相关联的方法调用都自动传递实参self,它是一个指向实例本身的引用,让实例能够访问类中的属性和方法。
class Car():
"""一次模拟汽车的简单尝试"""
def __init__(self,make,model,year):
"""初始化描述汽车的属性"""
self.make = make
self.model = model
self.year = year
self.odometer_reading = 0#增加一个里程数
def get_name(self):
"""返回汽车的信息"""
long_name = str(self.year) + ' ' +self.make + ' ' +self.model
return long_name.title()
def read_odometer(self):
"""打印里程数"""
print("This car has " + str(self.odometer_reading) + " miles on it.")
my_new_car = Car('BMW', 'X6', 2016)
print(my_new_car.get_name())
my_new_car.odometer_reading = 20#将0 修改成20
my_new_car.read_odometer()
结果
2016 Bmw X6
This car has 20 miles on it.
3.继承(第九章)(附加:类中三大特性,封装,继承和多态,c++和java都有多态,python明面上是没有多态的,但是也可以实现,如果有能力,可以探究下如何实现)
接着上面一部分
class Car():
"""一次模拟汽车的简单尝试"""
def __init__(self,make,model,year):
"""初始化描述汽车的属性"""
self.make = make
self.model = model
self.year = year
self.odometer_reading = 0#增加一个里程数
def get_name(self):
"""返回汽车的信息"""
long_name = str(self.year) + ' ' +self.make + ' ' +self.model
return long_name.title()
def read_odometer(self):
"""打印里程数"""
print("This car has " + str(self.odometer_reading) + " miles on it.")
my_new_car = Car('BMW', 'X6', 2016)
print(my_new_car.get_name())
my_new_car.odometer_reading = 20#将0 修改成20
my_new_car.read_odometer()
class ElectricCar(Car):
"""电动车的独特之处"""
def __init__(self,make,model,year):
"""初始化父类的属性"""
super().__init__(make,model,year)
my_tesla = ElectricCar('tesla', 'model s', 2016)
print(my_tesla.get_name())
结果
2016 Bmw X6
This car has 20 miles on it.
2016 Tesla Model S
4.import类到其他文件使用的几种方法,并在类中实现一个函数打印__file__关键字,看下__file__前后的变化,并解释原因(第九章)
(1)导入单个类
from 被导入类文件名 import 被导入类名
例如:from car import Car 从文件car.py中导入Car类
(2)导入多个类
from 被导入类文件名 import 被导入类名1,类名2等
例如:from car import Car,ElectricCar
(3)导入整个模块
import 被导入文件名
例如:import car
(4)导入模块内所有类
from car import
例如:from car import