首页 > Python资料 博客日记
aardio教程一) 基础语法-下
2024-03-16 15:00:03Python资料围观165次
条件判断语句
使用if
、elseif
和else
来对变量或表达式进行判断
io.open() //打开控制台
var a=1
if(a==1){
io.print("if")
}
elseif(a==11){
io.print("elseif")
}
else{
io.print("else")
}
也可以使用select
对变量或表达式进行判断,也就是JavaScript中的switch
语句,有一点不同的是,无需每个case都写一个break。
io.open() //打开控制台
var a = 1;
select( a ) {
case 1 { //判断 1===a 是否为真
io.print("a==1")
//其他代码
}
case 1,9,10 { //判断 a 是否其中的一个
io.print("a是1,9,10其中之一")
}
case 10;20 { //判断 ( 10<=a and a <=20 ) 是否为真
io.print("a在10到20的范围")
}
case "a"{ // 也可以判断字符串相等
io.print("a等于'a'")
}
case !=0{ //判断 a是否不等于0,这是自已指定关系运算符的示例
io.print("a不等于0")
}
else{ //所有条件不符时执行else语句块
io.print("a是其他值(0)")
}
}
循环语句
aardio中的循环有while
、for
、do while
和for in
,而while又有两种语法
第一种(和其他语言语法一样):
while(表达式){
}
第二种(和其他语言for
语法类似,不一样的是条件判断语句在第三个语句里):
while( var 初始化循环变量列表;判断条件前执行语句;条件判断语句 ) {
//需要循环执行的语句
}
do while
和其他语言是一样的
do{
//需要循环执行的语句
} while( 条件判断语句 )
for
循环则有点像Python中的for in range
for( 计数器变量= 初始数值; 最大数值; 步进数值) { //步进可以省略,默认值为1。
//需要循环执行的语句
}
举个例子:
io.open();
for( i=1;10;2 ){ //计数器i从1循环到10,每次递增2
io.print(i)
}
//支持修改计数器变量
for( i=1;10;1 )begin
i++;//如果你将i赋值为非数字,在下次循环以前将会被自动恢复为计数器值
end;
//递减计数器
for( i=1;-10;-1 )begin
io.print(i)
end;
execute("pause") //按任意键继续
io.close();//关闭控制台
循环中断语句
有break
和continue
两个语句,语法和其他语言中的基本一样。
aardio中还增加了一个标号,来指定在嵌套循环中中断哪一层循环,比如break 1
表示中断当前循环,break 2
表示中断上一层循环,你也可以在循环开始时指定一个标号(例子如下)。continue
也是类似语法
这个额外的语法只需要做了解即可,实际我也没用到过,可能是写其他语言已经习惯了,也会避免写多层循环。
io.open(); //打开控制台
while( true ){ 循环体2: //可以在循环体的开始指定一个标号
io.print("循环体2开始" );
while( true )begin
io.print("循环体1开始" );
break 2;//中断上层循环
break 循环体2; //这句的作用与上面的break作用是一样的
io.print("循环体1结束" );
end;
io.print("循环体2结束" );
}
execute("pause") //按任意键继续
io.close();//关闭控制台
异常捕获
try catch
,一般很少会用到,要想程序够健壮,需要做很多次判断。如果用try来捕获所有语句,虽然程序不报错了,但还是没有正常执行。
有个特殊的情况需要使用,有时候用一些多线程库的时候,即使某个线程报错了,程序确没有任何提示,控制台也不会打印异常,这个时候就需要用try来看看是线程里的哪个语句出错了
io.open(); //打开控制台窗口
try{
b="aaaaaaaaaaaa" *2
io.print("错误会中断try语句块")
}
catch(e){ //catch部分可以省略
io.print( "错误信息:",e )
//在这里可以调用debug库
//在栈释放以前调用错误处理
//所以可以调用debug库中的函数收集错误相关的信息
}
io.print("错误不会中断程序")
函数
定义函数
function f1(a, b){
io.print(a, b);
}
// 将一个匿名函数赋值给了一个变量
f2 = function(a, b){
io.print(a, b);
}
成员函数
成员函数和普通函数基本一样,只是可以通过owner访问成员变量
tab = {};
tab.函数名字 = function( 形参列表 ) {
//函数内部内码
}
tab = {x=1};
function tab.函数名字( 形参列表 ) {
//函数内部内码
io.print(owner.x);
}
可变参数
function f1(...){
var kwargs = {...};
console.dump(kwargs)
}
f1(1, 2, 3);
f1(1, 2);
关键词参数
aardio并不支持关键词参数,只能通过传整个表当参数
function f1(kwargs){
console.dump(kwargs);
}
f1({a=1;b="2"});
// 大括号也可以省略
f1(a=1;b="2");
返回值
函数可以返回多个值,接收的时候可以定义多个变量来接收,例如:var a,b = f();
当函数有很多个返回值时,你这个时候又只需要其中几个,则可以使用rget
来获取区间内的返回值
例如:
//打开控制台
io.open()
//定义一个函数
func = function(){
return 1,2,3; //函数有多个返回值
}
var re,re2 = rget(2,func() ) //从第二个参数开始返回, re==2,re2==3
io.print( re,re2 )
var re,re2 = rget(-1,func() ) //从倒数第一个参数开始返回, re==3,re2==null
io.print( re,re2 )
lambda(匿名函数)
因为aardio本身就支持在定义函数时不指定函数名,例如: function(){}
。这样定义匿名函数更方便和理解,所以lambda实际并不需要使用
变量作用域
Python中定义一个变量后可以在函数的任意一个位置使用这个变量
for i in range(10):
a = 1
print(a)
而aardio中使用var定义的局部变量作用域只限于当前语句块。
io.open()
while(true){
var a = 1;
break;
}
// 这个时候a就已经是null了
console.log(a)
namespace(名字空间)
namespace和Python模块的含义基本一样, 它其实就是个盒子,盒子里可以放你想放的函数或者变量,访问时通过名称+点+变量名
来访问, 例如:
namespace module{
a = 1;
}
io.print(module.a)
global
是默认的全局名字空间,aardio代码文件加载时,默认都运行在global名字空间。self
表示当前名字空间
导入名字空间(import)
和Python的导入库也基本类似,aardio的查找路径优先级:
- 内核库,aardio内核提供的库,如string、raw等
- 标准库,位于aardio根目录下的lib目录下,库路径与名字空间路径完全一致
- 用户库,当前工程下的lib目录
- 扩展库, 如果是开发环境(用编辑器启动没有编译成exe),还会查找扩展库列表。如果扩展库有的话,会提示你是否安装
本文由博客一文多发平台 OpenWrite 发布!
标签:
相关文章
最新发布
- 【Python】selenium安装+Microsoft Edge驱动器下载配置流程
- Python 中自动打开网页并点击[自动化脚本],Selenium
- Anaconda基础使用
- 【Python】成功解决 TypeError: ‘<‘ not supported between instances of ‘str’ and ‘int’
- manim边学边做--三维的点和线
- CPython是最常用的Python解释器之一,也是Python官方实现。它是用C语言编写的,旨在提供一个高效且易于使用的Python解释器。
- Anaconda安装配置Jupyter(2024最新版)
- Python中读取Excel最快的几种方法!
- Python某城市美食商家爬虫数据可视化分析和推荐查询系统毕业设计论文开题报告
- 如何使用 Python 批量检测和转换 JSONL 文件编码为 UTF-8
点击排行
- 版本匹配指南:Numpy版本和Python版本的对应关系
- 版本匹配指南:PyTorch版本、torchvision 版本和Python版本的对应关系
- Python 可视化 web 神器:streamlit、Gradio、dash、nicegui;低代码 Python Web 框架:PyWebIO
- 相关性分析——Pearson相关系数+热力图(附data和Python完整代码)
- Python与PyTorch的版本对应
- Anaconda版本和Python版本对应关系(持续更新...)
- Python pyinstaller打包exe最完整教程
- Could not build wheels for llama-cpp-python, which is required to install pyproject.toml-based proj