在Python里,可以使用一对单引号、对双引号或者一对三个双引号、一对三个单引号
#如果字符串里还有双引号,外面就可以使用单引号
m = 'xiaoming said : "I am xiaoming"'
n = "I'm xiaoming"
p = """ xiaomig said : "I am xiaoming" """
\
\'
==>显示一个普通的单引号\"
==>显示―个普通的双引号\n
==>表示一个换行\t
==>表示显示一个制表符\\
==>表示一个普通的反斜线在字符串的前面添加r在Python里表示的是原生字符串
x1 = 'hello \t world'
print(x1)
x2 = 'good mor \\ ning'
print(x2)
x3 = r'hello \teacher'
print(x3)
可迭代对象: str list tuple dict set range都可以便利
str list tuple可以通过下标来获取或者操作数据
在计算机里,下标都是从0开始的。
h
可以通过下标来获取或者修改指定位置的数据
切片就是从字符串里复制一段指定的内容,生成一个新的字符串
切片语法m[ start: end :step]
包合start,不包含end
step指的是步长,理解为间隔。 每隔step-1个取一次
step 为负数,表示从右往左获取
案例:
m = 'sahdghjgbdnflvkreoijtiuqwrwetre'
print(m[5]) # m[index]==>获取指定下标上的数据
print(m[2:9]) # 包合start,不包含end
print(m[2:]) # 如果只设置了start,会”截取"到最后
print(m[:9]) # 如果值设置了end,会从头开始"截取"
print(m[3:15])
print(m[3:15:2]) # dhgdfv
print(m[::]) # 从头到尾复制一遍
print(m[::-1]) # step 为负数,表示从右往左获取
print(m[-9:-5]) # start和end如果是负数,表示从右边数
函数的语法:
def函数名(参数1,参数2,参数3…): 函数体
1.在同一个文件中,若出现了定义的函数名相同的情况,后面定义的函数会覆盖前面定义的函数
2.若将函数名赋值给了一个变量,那还可以通过该变量调用函数
3.函数必须先定义,然后才能调用.函数调用必须在函数定义的下方
4.在项目中一个函数可以多次调用
1.定义函数时的传递的参数叫做形式参数,也叫做形参
2.调用函数时传递的参数叫做实际参数,也叫做实参.在去调用函数的时候,实参会把形参替换.
3.若在定义函数时,有形参,在调用时,函数必须传入实参.并且实参的数量和形参的数量保持一致
4.在函数中形参的名字和实参的名字可以一样,(本质上两者开辟的是不同的内存)
a.必须顺序参数
在调用函数的时候,必须以正确的顺序传参,参数数量保持一致
def student(name, age):
print("我的姓名是:%s,年龄是:%d" % (name, age))
# student(32, "王麻子") 顺序不同报错
student("王麻子",32) # 执行
b.关键字参数
使用关键字参数允许函数调用的时候,实参的顺序和形参的顺序不一致,可以使用关键字进行自动匹配
def student(name, age):
print("我的姓名是:%s,年龄是:%d" % (name, age))
student(age=32,name="王麻子")
c.默认参数
1.在定义函数时,若某个参数没有传递,但是定义了默认参数,会直接使用默认参数,若传递了参数,则会把默认参数替换
2.若函数设置了默认参数,并且该函数有多个参数,一般把默认参数放在参数列专的最后面
def get_sum(num1,num2,num3=21):
print(num1+num2+num3)
get_sum(12,34,56) #102
get_sum(12,34) #67
不定长参数:
1.*args:用来接收多个位置参数,得到的是一个元组
def demo(*args):
print(*args)
demo("hello", 12, 34, 5, 65)
demo(43, 45, 6)
2.在定义函数时,若函数中有多个参数,其中某一个参数是不定长参数,一般把不定长参数放在参数列表的最后面\
def test(name,*args):
print(name,*args)
test("麻瓜",12,34,56,86,43,"hello")
3. **kwargs:用来接收多个关键字参数,得到的是一个字典︰在传输参数的时候,必须是 key=value的形式传输
def fn(**kwargs):
print(kwargs)
fn(x=12, y=34, z=43)
- 函数返回值需要使用return关键字进行返回.
- 函数在哪里调用,就把结果返回到了哪里.
- 若想使用返回的结果,可以定义变量接收,也可以直接输出。
2.return后面的代码不会执行
3.函数中若没有return关键字或者没有数据返回,则默认返回是None
4.return关键字一次性返回多个数据.多个数据之间使用,
隔开,结果以元组的形式返回
def test():
return "返回值"
print("123")
print(test()) # 不会打印123
def demo():
return
print(demo()) #None
def demo1():
print("你好啊!")
print(demo1())
def fn1():
return 12,34,45 #None
像这种函数都是有名字的函数
def test():
print("有名字的函数")
print(test())
匿名函数:是一个表达式,比普通函数简单使用lambada定义的表达式
lambada表达式中包含了参数,实现体,返回值
num1 = lambda num: num ** 2
print(num1(3))
回调函数:把一个函数(a)作为一个参数传递到另一个函数(b)中去,那么这个函数a我们就叫做回调函数。
def add(x,y):
print(x+y)
def demo(x,y,func):
func(x,y)
demo(12,23,add)
如果一个函数里面嵌套了另外一个函数,外部的函数叫做外函数,内部的函数叫做内函数
如果在一个外部函数中定义了一个内部函数,并且外部函数的返回值是内部函数,就构成了一个闭包.则这个内部函数就被称为闭包
闭包函数的特点:内部函数可以使用外部函数的变量
闭包函数主要用于装饰函数的实现
def outer(x):
y = 11
def inner():
print("我是闭包函数", x + y)
return inner # 注意:这里返回的是函数体,不是函数的调用
fn = outer(7) # fun ===>inner 函数
fn() # 就相当于调用了inner 函数
1.if 等分支语句和for in等循环语句不存在作用域的问题,他们里面定义的变量可以在外部直接访问
2.函数内部的变量,在函数的外部不能直接访问
3.函数内部可以直接访问函数外部的变量
num1 = 67
def fn1():
# 若想再函数的内部直接修改函数外部的变量,需要使用global关键字,将函数内部变量变更为全局变量
global num1
num1 = 88
print(num1)
fn1()
# print(num1) # 67 是在函数内部添加global关键字之前的结果
print(num1)
import turtle
turtle.forward(200)
turtle.done()
一些画图原理:
import turtle
turtle.shape("turtle")
turtle.color("red")
turtle.left(90)
turtle.forward(200)
turtle.right(90)
turtle.forward(200)
turtle.right(90)
turtle.forward(200)
turtle.right(90)
turtle.forward(200)
turtle.begin_fill()
turtle.circle(100)
turtle.end_fill()
turtle.done()
import turtle
turtle.shape("turtle")
turtle.color("red")
for i in [0,1,2,3,4]:
turtle.right(144)
turtle.forward(200)
turtle.done()
# 请进小海龟,并设置小海龟的外形和颜色
import turtle
turtle.shape("turtle")
turtle.color("red")
def drawstar(x, y, color):
turtle.up()
turtle.goto(x, y)
turtle.down()
turtle.color(color)
for i in [0, 1, 2, 3, 4]:
turtle.right(144)
turtle.forward(100)
# 设置小海龟的位置和朝向
# 绘制第一个五角星
drawstar(-200, 200, "blue")
# 再一次设置小海龟的位置和朝向
# 绘制第二个五角星
drawstar(300, 200, "green")
# 继续设置小海龟的位置和朝向,并绘制第三、第四个五角星
drawstar(-200, -200, "red")
drawstar(300, -200, "black")
turtle.up()
turtle.home()
turtle.done()